码迷,mamicode.com
首页 > 其他好文 > 详细

解决头文件中定义全局变量MSVC、GNU编译器出现重定义问题

时间:2017-08-26 19:53:21      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:重定义   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!