有时候我们经常碰到这样的事情,想定义某个类的静态成员,在头文件中定义该成员或者全局变量,头文件又同时被多个文件引用到,链接的时候则会出现,重定义,但是又不想在cpp文件中定义,现有一种方法可以解决此问题,直接上代码
#if defined(_MSC_VER ) __declspec(selectany) #elif defined(__GNUC__) __attribute__((weak)) #else #error "unknown complier" #endif int a=1;
如果不同的编译器用不同方式,大体都是解决头文件重定义问题,对于clang编译器不知是否兼容GNU这种定义方式,待测。具体原理百度关键字就有了。
时间: 2024-10-24 14:12:32