如果你嵌套extern"C"会发生什么?

cal*_*vin 9 c++ nested extern

看起来嵌套extern"C"是合法的.例如:

extern "C" extern "C" void foo();
Run Code Online (Sandbox Code Playgroud)

第二个extern "C"基本上被忽略了.这是由C++标准保证的吗?哪里?

cal*_*vin 27

是的,但它实际上是第一个extern "C"被忽略的.引用标准[dcl.link]:

链接规范嵌套.当链接规范嵌套时,最里面的规则确定语言链接.

  • @orochryden在这种情况下,您可以同时发布答案,作为问题.问题填充页面底部应该有一个额外的框,以获得答案. (2认同)