解决头文件中定义全局变量MSVCGNU编译器出现重定义问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决头文件中定义全局变量MSVCGNU编译器出现重定义问题相关的知识,希望对你有一定的参考价值。
有时候我们经常碰到这样的事情,想定义某个类的静态成员,在头文件中定义该成员或者全局变量,头文件又同时被多个文件引用到,链接的时候则会出现,重定义,但是又不想在cpp文件中定义,现有一种方法可以解决此问题,直接上代码
#if defined(_MSC_VER ) __declspec(selectany) #elif defined(__GNUC__) __attribute__((weak)) #else #error "unknown complier" #endif int a=1;
如果不同的编译器用不同方式,大体都是解决头文件重定义问题,对于clang编译器不知是否兼容GNU这种定义方式,待测。具体原理百度关键字就有了。
以上是关于解决头文件中定义全局变量MSVCGNU编译器出现重定义问题的主要内容,如果未能解决你的问题,请参考以下文章
fatal error LNK1169:找到一个或多个重定义的符号