【发布时间】:2013-01-20 08:29:23
【问题描述】:
我经常使用#pragma once,它在处理标头时似乎工作正常,但由于某种原因,以下创建了多个定义的链接器错误:
#pragma once
int someVariable=5;
pragma 不应该也阻止这种情况吗?
【问题讨论】:
-
#pragma once 在标头中使用。不要在标题中定义变量!只需声明它。 #pragma once 只防止它被同一个文件多次包含,但不能被多次包含(例如,可以被两个不同的文件包含两次)。
-
它避免了header的内容被包含在同一个TU中而不是跨TU。您通过在标头中定义变量来破坏 ODR。
标签: c++