在代码中使用#define 进行文本替换
Using #define for text replacement in the code
看来我可以设置
#define LIMIT 50
也就是说 LIMIT 在代码中出现的任何地方都被 50 替换了。
是否可以使用
#define ui "unsigned int"
以这种方式定义我的变量?
ui foo = 42
ui bar = 99
不推荐使用预处理器进行替换,这可能会导致意外问题。
对于您的用例,有 typedef
或 using
语句:
使用:
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;
看来我可以设置
#define LIMIT 50
也就是说 LIMIT 在代码中出现的任何地方都被 50 替换了。
是否可以使用
#define ui "unsigned int"
以这种方式定义我的变量?
ui foo = 42
ui bar = 99
不推荐使用预处理器进行替换,这可能会导致意外问题。
对于您的用例,有 typedef
或 using
语句:
使用:
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;