Код: Выделить всё
// header.h
struct test {
static inline int get();
};
Код: Выделить всё
// a.cpp
#include "header.h"
int testA() { return test::get(); }
int test::get() { return 0; }
Код: Выделить всё
// b.cpp
#include "header.h"
int testB() { return test::get(); }
int test::get() { return 1; }
Код: Выделить всё
// main.cpp
#include
int testA();
int testB();
int main() {
printf("%d %d\n", testA(), testB());
}
Кроме того, если я добавлю анонимное пространство имен в header.h, т.е.
Код: Выделить всё
// header.h
namespace {
struct test {
static inline int get();
}
}
Но я не могу скомпилировать коды с анонимным пространством имен, если они изменятся test::get() в глобальную функцию
Код: Выделить всё
// header.h
namespace {
static inline int test_get();
}
// A.cpp
#include "header.h"
int testA() { return test_get(); }
//int test_get() { return 0; }
//namespace { int test_get() { return 0; }
// failed to compile neither with or without namespace
Подробнее здесь: https://stackoverflow.com/questions/780 ... ation-flag
Мобильная версия