C 与 C++ 中的 Clang -Wunused-const-variable
Clang -Wunused-const-variable in C vs. C++
一个只有 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.
C 与 C++ const 对于此类 const 静态范围变量是否有任何根本区别,或者这只是一个警告,恰好在 clang C++ 前端实现,而不是在 C 前端实现.
在 C++ 中,它具有内部链接,因此编译器可以知道它未被使用。在 C 中,它具有外部链接,因此它可能会被另一个翻译单元使用,因此发出警告还为时过早。
一个只有 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.
C 与 C++ const 对于此类 const 静态范围变量是否有任何根本区别,或者这只是一个警告,恰好在 clang C++ 前端实现,而不是在 C 前端实现.
在 C++ 中,它具有内部链接,因此编译器可以知道它未被使用。在 C 中,它具有外部链接,因此它可能会被另一个翻译单元使用,因此发出警告还为时过早。