我经常使用#pragma once
并且在处理标头时似乎工作正常但由于某种原因,以下内容会创建多个定义的链接器错误:
#pragma once
int someVariable=5;
pragma
不应该阻止这个吗?
答案 0 :(得分:5)
这个pragma不应该阻止它吗?
不,在这种情况下,如果此头文件包含在多个位置,则会创建someVariable的多个定义。如果B.h和C.h都包含你的头文件,那么将创建两个someVariable。
更好的方法是只在一个.cpp文件中定义变量,在其他地方使用extern
。