https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45977
Jörn Heusipp <manx-bugzilla at problemloesungsmaschine dot de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |manx-bugzilla@problemloesun | |gsmaschine.de --- Comment #8 from Jörn Heusipp <manx-bugzilla at problemloesungsmaschine dot de> --- I am seeing the same warning, however in C++, when trying to set DJGPP's CRT startup flags (see <http://www.delorie.com/djgpp/v2faq/faq18_9.html>): ``` manx@appendix:~/tmp$ cat djgpp-main.cpp #include <crt0.h> extern "C" int _crt0_startup_flags = 0 | _CRT0_FLAG_LOCK_MEMORY; int main(int argc, char * argv[]) { _crt0_startup_flags &= ~_CRT0_FLAG_LOCK_MEMORY; static_cast<void>(argc); static_cast<void>(argv); return 0; } manx@appendix:~/tmp$ i386-pc-msdosdjgpp-g++ -c -std=gnu++17 -O2 -Wall -Wextra -Wpedantic djgpp-main.cpp djgpp-main.cpp:2:16: warning: '_crt0_startup_flags' initialized and declared 'extern' 2 | extern "C" int _crt0_startup_flags = 0 | _CRT0_FLAG_LOCK_MEMORY; | ^~~~~~~~~~~~~~~~~~~ manx@appendix:~/tmp$ ``` minimal test case: ``` manx@appendix:~/tmp$ cat warn.cpp extern "C" { extern int foo; } extern "C" int foo = 23; manx@appendix:~/tmp$ g++ -c -std=c++17 -O2 -Wall -Wextra -Wpedantic warn.cpp warn.cpp:4:16: warning: ‘foo’ initialized and declared ‘extern’ 4 | extern "C" int foo = 23; | ^~~ manx@appendix:~/tmp$ ``` also happens with no -W flags: ``` manx@appendix:~/tmp$ g++ -c -std=c++17 -O2 warn.cpp warn.cpp:4:16: warning: ‘foo’ initialized and declared ‘extern’ 4 | extern "C" int foo = 23; | ^~~ ``` However, I am not seeing the warning in C code: ``` manx@appendix:~/tmp$ cat warn.c extern int foo; int foo = 23; manx@appendix:~/tmp$ gcc -c -std=c17 -O2 -Wall -Wextra -Wpedantic warn.c manx@appendix:~/tmp$ ``` I would really appreciate an option to disable this warning in C++. I am not 100% sure if my issue is really identical, but it certainly looks related. Also, as the original issue was about C, do you want me to report a separate issue for C++? GCC versions: manx@appendix:~/tmp$ gcc --version gcc (Debian 11.2.0-18) 11.2.0 manx@appendix:~/tmp$ i386-pc-msdosdjgpp-gcc --version i386-pc-msdosdjgpp-gcc (GCC) 10.3.0