diff --git a/man/checkers/preprocessorErrorDirective.md b/man/checkers/preprocessorErrorDirective.md
new file mode 100644
index 00000000000..44fcb4c1a28
--- /dev/null
+++ b/man/checkers/preprocessorErrorDirective.md
@@ -0,0 +1,55 @@
+
+# preprocessorErrorDirective
+
+**Message**: #error message
+**Category**: Configuration
+**Severity**: Error
+**Language**: C and C++
+
+## Description
+
+The `#error` directive is a preprocessor instruction in C and C++ that explicitly generates a compilation error. It is typically used as a safeguard to prevent compilation under incorrect conditions—like unsupported configurations, platforms, or missing defines.
+
+These warnings from Cppcheck do not indicate a bug in your code. These warnings indicate that the Cppcheck configuration is not working.
+
+## How to fix
+
+The warning is typically reported for an `#error` directive that is located inside some conditional preprocessor block (`#if..`, `#else`, etc):
+```cpp
+#ifndef __BYTE_ORDER__
+#error Byte order is not defined
+#endif
+```
+
+The code here is correct and you should not try to change it.
+
+Somehow it will be necessary to define `__BYTE_ORDER__` in Cppcheck analysis.
+
+### gcc compiler macro
+If you compile your code with gcc and the macro is provided by gcc, then you can define all gcc-macros using these commands:
+```
+echo x > dummy.c
+gcc -dM -E dummy.c > gcc-macros.h
+```
+The gcc-macros.h that is generated can be included in cppcheck using the `--include` option:
+```
+cppcheck --include=gcc-macros.h ....
+```
+
+### library macro
+If the macro that is needed is defined in some library header it might be possible to fix the issue by using an extra `--library` option:
+```
+cppcheck --library=foo .....
+```
+
+### manually defined macro
+To define extra macros manually you can use `-D`:
+```
+cppcheck -D__BYTE_ORDER__=123 .....
+```
+
+### use --force or --max-configs
+You can let Cppcheck try to resolve the required defines:
+```
+cppcheck --force .....
+```