内部链接限制符号仅在当前翻译单元内可见,如static修饰或匿名命名空间中的变量函数;外部链接允许符号跨翻译单元共享,如非static全局变量函数,默认具有外部链接,二者决定符号能否被其他文件引用,不同于作用域。

在C++中,内部链接(internal linkage)和外部链接(external linkage)是描述程序中符号(如变量、函数等)在不同翻译单元之间是否可见、是否可被引用的重要概念。它们与作用域和链接性密切相关,但又不完全等同于作用域。
链接性决定了一个名字(name)在程序的不同部分能否被引用:
翻译单元指的是一个源文件(.cpp)及其包含的所有头文件,在编译时作为一个整体处理。
具有内部链接的符号不会暴露给其他源文件。常见方式包括:
立即学习“C++免费学习笔记(深入)”;
例如:
namespace {这些符号不会与其他文件中的同名符号冲突,也不会被外部使用。
大多数全局非静态名字默认具有外部链接,可以在多个源文件之间共享。
例如:
// file1.cpp编译器会把不同文件中具有外部链接的同名符号合并到一起,由链接器完成地址绑定。
作用域决定名字在代码中哪些位置可以“看到”;而链接性决定这个名字是否能在其他翻译单元中被引用。
例如,一个 static 全局变量虽然在本文件中作用域是整个文件,但由于内部链接,别的文件就算知道名字也无法链接它。
基本上就这些。理解内部与外部链接,有助于写出模块清晰、避免命名冲突、易于维护的C++代码。
以上就是c++++中什么是内部链接和外部链接_c++符号链接范围与作用域解析的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号