【问题标题】:#define vs. const in C++ [duplicate]C ++中的#define与const [重复]
【发布时间】:2014-03-23 12:44:45
【问题描述】:

我有一个理论问题要问你;)。在我一直在学习 C++ 的书中(虽然它很棒,但它只是用我的母语,所以标题不会指定任何内容)作者对 #defineconst 变量进行了比较。他支持第二种方法,因为它更适合调试,但他根本没有谈论的一件事是内存管理。假设我们有大量想要定义的常量。当然,它可能会占用大量内存。老实说,我还在学习,我从来不需要这么多常量,但是当我了解到你可以在 shortintlong 之间进行选择时,我开始想也许这几位大程序的不同。所以我的问题是:您对此有何看法?

【问题讨论】:

    标签: c++ constants c-preprocessor


    【解决方案1】:

    假设我们有大量想要定义的常量。当然会占用大量内存

    实际上,它可能不会。更有可能你的所有常量都被你聪明的编译器直接硬编码到使用它们的表达式中。这样,内存占用与预处理器宏的占用相同。

    如果这不是自动发生的,通常是有充分理由的。您通常还会发现在禁用优化的情况下编译时不会发生这种情况,例如“调试模式构建”;对于此类构建,您寻求的通常是程序的正确性,而不是高性能。

    当我了解到您可以在“short”、“int”和“long”之间进行选择时,我开始认为也许这几个位在大型程序中会有所不同

    在某些情况下,当然可以。大量数据的网络传输、具有巨大可扩展性问题的领域,例如 Facebook 的数据库……但总的来说,你不想担心这些东西。当你需要时,你会知道的。

    【讨论】:

    • 书中作者说它实际上是作为普通变量保存到内存中的,因此您可以在调试器中检查它们的值。
    • @Fiodor:如果您在打开优化的情况下进行编译(您将在发布模式下这样做),通常不是的情况。
    • 是的。这是我没有想到的,谢谢;)。
    猜你喜欢
    • 2021-02-14
    • 2011-01-27
    相关资源
    最近更新 更多