Спецификация C ++ (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf, раздел 7.5.4) утверждает, что
Спецификация связи должна встречаться только в области имен
Что именно означает «область имен»? Означает ли это, что спецификация связи, такая как extern "C"
не может быть в глобальной области видимости, только в пространстве имен?
Что именно означает «область имен»?
Это означает, что extern "C"
должно быть только в области имен (не в области классов, в области блоков и т. д.). То, что не в пространстве имен, а в глобальной области, — в глобальной области имен.
Потенциальная сфера, обозначенная
original-namespace-name — это объединение декларативных областей, установленных каждым из
Определения пространства имен в той же декларативной области с этим исходным именем пространства имен.
Других решений пока нет …