F-35 Fighter Jet's C++ Coding Standards [pdf]
----
- 15 minutes ago | 11 points | 2 comments
- URL: https://www.stroustrup.com/JSF-AV-rules.pdf
- Discussions: https://news.ycombinator.com/item?id=46185393
- Summary: LOCKHEED MARTIN’S JOINT STRIKE FIGHTER “2RDU00001 Rev C” DECEMBER 2005 C++ CODING STANDARDS
Purpose: Mandatory rules for safety-critical Air Vehicle software, extending MISRA-C concepts to C++.
Core Goals: Reliability, portability, maintainability, testability, reusability, extensibility, readability.
Key Constraints:
- Functions ≤ 200 logical lines, cyclomatic complexity ≤ 20.
- Strict subset of ISO C++ 2003; no trigraphs, digraphs, wide/multi-byte chars, errno, setjmp/longjmp, stdio, abort/exit, etc.
- Only four preprocessor directives allowed: #ifndef, #define, #endif, #include; no macro constants or inline macros—use const/inline functions.
- Headers *.h, implementations *.cpp; include guards mandatory; forward declarations to cut dependencies.
Style: 120-char lines, 2-space indent, no tabs, lowercase identifiers with underscores, public/protected/private order, braces required for all blocks.
Libraries: Only DO-178B level A certified or in-house safety-critical libraries.
Deviations: “Shall” rules require engineering & product-manager approval and inline documentation.
endif
#C
经常在一些厂家SDK看到有变量define在header里
为了防止重复linker还特意加了
#ifndef __XXXXX_C
extern .....;
#else
.....;
#endif
这是为了什么呢
Edited 268d ago