Extra Clang Tools 3.8 documentation

misc-definitions-in-headers

«  misc-bool-pointer-implicit-conversion   ::   Contents   ::   misc-inaccurate-erase  »

misc-definitions-in-headers

Finds non-extern non-inline function and variable definitions in header files, which can lead to potential ODR violations.

// Foo.h
int a = 1; // Warning.
extern int d; // OK: extern variable.

namespace N {
  int e = 2; // Warning.
}

// Internal linkage variable definitions are ignored for now.
// Although these might also cause ODR violations, we can be less certain and
// should try to keep the false-positive rate down.
static int b = 1;
const int c = 1;

// Warning.
int g() {
  return 1;
}

// OK: inline function definition.
inline int e() {
  return 1;
}

class A {
 public:
  int f1() { return 1; } // OK: inline member function definition.
  int f2();
};

int A::f2() { return 1; } // Warning.

«  misc-bool-pointer-implicit-conversion   ::   Contents   ::   misc-inaccurate-erase  »