gcc supports it only at the beginning:
$ g++ -o /dev/null -c /tmp/test_extern.cpp $ cat /tmp/test_extern.cpp extern "C" __attribute__ ((__visibility__("default"))) int foo();
Otherwise:
$ g++ -o /dev/null -c /tmp/test_extern.cpp /tmp/test_extern.cpp:1:52: error: expected unqualified-id before string constant 1 | __attribute__ ((__visibility__("default"))) extern "C" int foo(); | ^~~ $ cat /tmp/test_extern.cpp __attribute__ ((__visibility__("default"))) extern "C" int foo();