一个只有const声明的文件,如下所示:
const int genericRC = 0;当使用clang C++前端编译时,会警告这个未使用的变量。然而,clang C前端却对此保持沉默:
$ cat x.sh
clang -c src/x.c -Wall -std=c11
clang++ -c src/t.cpp -Wall -std=c++11
$ ./x.sh
src/t.cpp:1:11: warning: unused variable 'genericRC' [-Wunused-const-variable]
const int genericRC = 0;
^
1 warning generated.对于这种类型的const静态作用域变量,C与C++ const之间是否有根本的区别,或者这只是一个碰巧在clang C++前端实现的警告,而不是在C前端实现的警告。
发布于 2017-04-10 02:02:39
在C++中,它有内部链接,所以编译器可以知道它是未使用的。在C语言中,它有外部链接,因此它可以从另一个翻译单元中使用,因此警告还为时过早。
https://stackoverflow.com/questions/43313922
复制相似问题