hyu*_*ong 12 c++ g++ extern linkage clang++
当我只是检查哪些链接被授予外部局部变量时,
我发现编译器之间的一些不同行为
例如,如果我测试了下面的代码,
正如您在评论中看到的那样,变量vars 有不同的链接
// foo.cpp
int var = 10; // external linkage
// main.cpp
#include <iostream>
static int var = 100; // internal linkage
int main() {
extern int var; // internal linkage
std::cout << var << std::endl;
{
extern int var; // g++: external linkage , clang++: internal linkage
std::cout << var << std::endl;
{
extern int var; // g++: external linkage , clang++: internal linkage
std::cout << var << std::endl;
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果是
我可以从结果中看到,如果有两个以上的嵌套块,
g++ 只会授予变量的外部链接
我可以在标准中找到相关短语,
但仍然不清楚,因为编译器的行为不同
(https://eel.is/c++draft/basic.link#6)
恐怕我的英语不好,所以我无法正确
理解如果有人知道哪些编译器符合标准
,如果可能的话,有人可以详细说明标准对我说的确切内容吗?
| 归档时间: |
|
| 查看次数: |
235 次 |
| 最近记录: |