C/C++-建议使用const-static还是#define

C/C++ - Is it Recommended to use const static or #define

本文关键字:const-static 还是 #define C++-      更新时间:2023-10-16

可能重复:
C 中的"static const"与"#define">

我的第一个想法是这是隐含的,但有没有理由使用const而不是#define

如果你设置了一个全局变量,你为什么要改变它,难道不想在全局范围内保护它吗?

Const通常取代#define

#define是一个预处理器宏,可以执行文本替换。你可以用它来定义一个常量或宏,或者做其他各种事情。

const是定义编译时常量的一种类型安全的方法

这两种机制在编译过程中出现在不同的时间,但总的来说,创建const是为了纠正#define的问题。

我很少看到人们做类似的事情

#define CONSTINT  const int

但这是合法的。

const仅与在运行时传递的变量相关,以确保子例程不会更改它们。#define是一个预处理器compiletime指令,它用您定义的内容替换您定义的任何内容。因此,它们有不同的用途。

编辑这是对您最初的问题的回答,即您是否将constdefine一起使用。。。现在你编辑了这个问题来问一些不同的问题,这真的没有意义。

#define没有定义变量,所以无论如何都不能更改它,所以这个问题没有意义。

这是不可能的:

#define FOO 99
int main()
{
    FOO = 98;
}

因为预处理器将宏FOO替换为替换的99,所以编译器看到以下代码:

int main()
{
    99 = 98;
}

显然这是无稽之谈。你不能赋值给一个文字,它不是一个变量(无论是否为常量(,它只是一个值。