Miscellaneous-MissingInlineDefinition

Inline functions must be defined in every compilation unit where they are declared

Required inputs: IR

If a compilation unit declares an inline function, but does not contain a definition, undefined behavior occurs.
Bad code:
// foo.h
inline int foo(); // ERROR: Inline function is missing definition in compilation unit 'main.c'

// foo.c
#include "foo.h"
inline int foo() { return 42; }
void bar() {
    int value = foo();
    // ...
}

// main.c
#include "foo.h"
int main () {
    return foo();
}
Good code (inline definition provided in header):
// foo.h
static inline int foo() { return 42; } // OK: Definition is provided in all translation units.

// foo.c
#include "foo.h"
void bar() {
    int value = foo();
    // ...
}

// main.c
#include "foo.h"
int main () {
    return foo();
}

Possible Messages

Key

Text

Severity

Disabled

missing_inline_def_in_multiple_units

Inline function is missing definition in {} compilation units (e.g. ‘{}’)

None

False

missing_inline_def_in_single_unit

Inline function is missing definition in compilation unit ‘{}’

None

False

Options