我正在阅读Bruce Eckel撰写的《 C++思维》第二版,第82页,其中写道:“您可以在许多不同的地方声明变量或函数,但是在C和C++中必须只有一个定义(有时称为ODR:一种定义规则)。”

声明一次以上会带来什么好处?您是否需要这样做还是仅仅是为了使代码更具可读性?

谢谢。

最佳答案

通常,您只希望在声明文件的位置(例如.h文件中)放置一个位置。这可能会通过#include变成多个位置,这就是为什么可以在多个位置定义它的原因。

但是,在某些(罕见)方案中,您可能需要两次声明一个函数。例如,有时在调试时我可能只插入:

void someFunction(int foobar);

在要调试的函数上方,然后调用someFunction(即使它不在static中,即使它在其他文件中也是如此)。这不一定是一个好习惯,但也许我不是想要添加.h文件并将其设置在我的Makefile / CMakeLists / etc中。但是,例如因为它将迫使更多的东西重新编译。

有一些相关的方案,但是我想强调,这被认为是不好的做法。您不会以这种方式提交;这可能只是一个快速的技巧。

07-24 09:46
查看更多