技术栈

odr

程序喵大人
20 天前
开发语言·c++·编译链接·odr
【C++入门】编译链接模型 - 05 ODR 为什么会让重复定义变成工程炸点博主介绍:程序喵大人【AIAgent项目】从零构建一个代码PRAgent 【C++入门】编译链接模型 - 01 一个 C++ 程序是怎样变成可执行文件的 【C++入门】编译链接模型 - 02 预处理把头文件怎样塞进源文件 【C++入门】编译链接模型 - 03 翻译单元才是编译器真正看到的文件 【C++入门】编译链接模型 - 04 声明让编译器通过检查,定义给链接器提供实体
草上爬
2 年前
开发语言·c++·effective c++·odr
Effective C++笔记之二十一:One Definition Rule(ODR)ODR细节有点复杂,跨越各种情况。基本内容如下: ●普通(非模板)的noninline函数和成员函数、noninline全局变量、静态数据成员在整个程序中都应当只定义一次。 ●class类型(包括structs和unions)、模板(包括偏特化但是不包括全特化)、inline函数和inline变量在单个编译单元中最多定义一次,并且这些定义应该完全一样。 一个编译单元是源文件预处理后的结果,也就是说,它包含#include指令和宏拓展后的内容。与C语言一样,C++中所有的预处理指令都是以字符#开头,这些指令
我是有底线的