小编hyu*_*ong的帖子

为什么不同块中相同命名的外部局部变量在 C++ 中的编译器之间获得不同的链接?

当我只是检查哪些链接被授予外部局部变量时,
我发现编译器之间的一些不同行为

例如,如果我测试了下面的代码,
正如您在评论中看到的那样,变量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)

结果是 …

c++ g++ extern linkage clang++

12
推荐指数
1
解决办法
235
查看次数

为什么指针在 C++ 中不被归类为实体?

我在 C++ 标准的第 3 章“基本概念”中看到了一句话。

为什么指针不被归类为实体?即使其中包含引用。

实体是值、对象、引用、函数、枚举数、类型、类成员、位域、模板、模板特化、命名空间或参数包。

c++ standards entity pointers

0
推荐指数
1
解决办法
62
查看次数

标签 统计

c++ ×2

clang++ ×1

entity ×1

extern ×1

g++ ×1

linkage ×1

pointers ×1

standards ×1