哪种更好的做法:全局常量还是#define?

Zac*_*zic 4 c++ constants c-preprocessor

可能重复:
C++ - enum vs. const vs. #define

在我使用之前,我曾经#define在我的main函数中创建常量并将它们传递到需要的地方.我发现我经常通过它们,这有点奇怪,尤其是数组大小.

最近我一直在使用#define,因为我不必将main中的常量传递给每个单独的函数.

但是现在我想起来了,我也可以使用全局常量,但出于某种原因,我对他们有点犹豫不决.

哪种更好的做法:全局常量还是#define

一个附带问题,也是相关的:正如我描述的一个不好的做法,是否传递了我的主要常量?

Jon*_*Jon 6

他们没有做同样的事情.#define允许您在编译时影响代码,而全局常量仅在运行时生效.

眼见为#define只能给你带来更多的麻烦,因为没有检查你如何使用它去,你应该使用全局常量时,你可以和#define当你必须这样做.这样会更安全,更具可读性.

至于传递常量main,这并不是不合理的,因为它使被调用的函数更灵活地接受来自调用者的参数而不是盲目地将其从某些全局中拉出来.当然,这个论点并没有真正预期会在你没有太多收获的程序的生命周期中发生变化.