g++编译时warning: “

您所在的位置:网站首页 40039102指数 g++编译时warning: “

g++编译时warning: “

2024-07-10 10:04| 来源: 网络整理| 查看: 265

XXX.h:25: warning: "__USE_GNU" redefined #define __USE_GNU ..... ..... XXXX/include/features.h:376: note: this is the location of the previous definition # define __USE_GNU 1 报警原因:

__USE_GNU宏被重复定义。

解决办法:去掉我们定义的__USE_GNU宏(xxx.h文件的25行的#define __USE_GNU代码去掉)

引入新问题: gcc编译时报警告

warning: implicit declaration of function ‘CPU_ZERO’; did you mean ‘FP_ZERO’? [-Wimplicit-function-declaration]

报警原因:

需要定义__USE_GNU宏。

问题分析

gcc编译器需要定义__USE_GNU宏,g++编译器不需要定义__USE_GNU宏;

__USE_GNU 不是开放给用户用的,features.h里面会修改#undef  __USE_GNU;

 _GNU_SOURCE 是给用户用的,features.h里面

375 #ifdef  _GNU_SOURCE                                                                                                      376 # define __USE_GNU      1                                                                                                377 #endif

 gcc和g++编译器默认定义有区别,g++默认定义了_GNU_SOURCE,gcc没有。

总结:

针对上述问题修改方法有2种:

方法一:

在xxx.h定义__USE_GNU的位置加上ifndef

#ifndef __USE_GNU #define __USE_GNU #endif

方法二:

在编译配置里面定义_GNU_SOURCE,如在CMakeList.txt文件里添加:

add_definitions(-D_GNU_SOURCE)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3