【发布时间】:2013-01-17 05:48:51
【问题描述】:
我不确定我是否正确地问了这个问题,但让我解释一下。
首先,我阅读了这篇解释声明和定义之间区别的文章: http://www.cprogramming.com/declare_vs_define.html
其次,我从之前的研究中知道,在头文件中定义变量和函数是不好的做法,因为在链接阶段,您可能有多个同名定义,这会引发错误。
但是,为什么课程不会发生这种情况?根据另一个SO答案( What is the difference between a definition and a declaration? ),下面是一个类定义:
class MyClass {
private:
public:
};
如果上述定义在头文件中。然后,据推测,您可以拥有多个 #include 该标头的 .cpp 文件。这意味着在多个 .o 文件中编译后多次定义该类,但似乎不会造成太大问题...
另一方面,如果它是在头文件中定义的函数,显然会导致问题...据我了解...也许?
那么类定义有什么特别之处呢?
【问题讨论】:
-
你的头文件有头保护吗?
-
确实如此。但是,据我了解,标头保护只能防止同一源文件中的多个定义(stackoverflow.com/questions/2216765/…)。此问题主要与包含相同标头的多个源文件的情况有关。
标签: c++ linker header-files one-definition-rule