misc-use-internal-linkage¶
Detects variables, functions, and classes that can be marked as static or (in C++) moved into an anonymous namespace to enforce internal linkage.
Any entity that’s only used within a single file should be given internal linkage. Doing so gives the compiler more information, allowing it to better remove dead code and perform more aggressive optimizations.
Example:
int v1; // can be marked as static
void fn1() {} // can be marked as static
// already declared as extern
extern int v2;
void fn3(); // without function body in all declaration, maybe external linkage
void fn3();
// === C++-specific ===
struct S1 {}; // can be moved into anonymous namespace
namespace {
// already in anonymous namespace
int v2;
void fn2();
struct S2 {};
}
// export declarations
export void fn4() {}
export namespace t { void fn5() {} }
export int v2;
export class C {};
Options¶
- FixMode¶
Selects what kind of a fix the check should provide. The default is UseStatic.
None Don’t fix automatically.
UseStatic Add
staticfor internal linkage variable and function.
- AnalyzeFunctions¶
Whether to suggest giving functions internal linkage. Default is true.
- AnalyzeVariables¶
Whether to suggest giving variables internal linkage. Default is true.
- AnalyzeTypes¶
(C++ only) Whether to suggest giving user-defined types (structs, classes, unions, and enums) internal linkage. Default is true.