在代码中使用#define 进行文本替换

Using #define for text replacement in the code

看来我可以设置

#define LIMIT 50

也就是说 LIMIT 在代码中出现的任何地方都被 50 替换了。

是否可以使用

#define ui "unsigned int"

以这种方式定义我的变量?

ui foo = 42
ui bar = 99

不推荐使用预处理器进行替换,这可能会导致意外问题。

对于您的用例,有 typedefusing 语句:

使用:

using ui = unsigned int;

或者:

typedef unsigned int ui;

有两个问题
#define ui "unsigned int"

首先是宏替换是 string 而不是类型。

第二个是这样的宏(甚至类型别名)往往会使代码更难阅读、理解和维护。

MACRO 只是进行文本替换,因此:

#define ui "unsigned int"
ui foo = 42;
ui bar = 99;

替换后你得到了


"unsigned int" foo = 42;
"unsigned int" bar = 99;

无效。

语法为:

#define ui unsigned int

但最好在此处使用 typedef(以便尊重范围和类型):

老派:

typedef unsigned int ui;

现代方式:

using ui = unsigned int;