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