#define表示unsigned long

Ant*_*ony 2 c macros c-preprocessor

我正在尝试使用该#define指令将所有"ulong"更改为"unsigned long".这是一个例子:

#define ulong unsigned long
ulong idCounter = 0;
Run Code Online (Sandbox Code Playgroud)

可悲的是,我认为最终用"无符号"代替ulong,而不是"unsigned long".我试过"#define ulong(unsigned long)",但这也不起作用.

Joh*_*itb 15

更好地使用typedef.您的宏可能失败的原因是 - 它在某些地方可能在语法上无效.考虑:

double x = calc();
ulong v = ulong(x);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,你得到

unsigned long v = unsigned long(x);
Run Code Online (Sandbox Code Playgroud)

这是无效的,因为使用的强制转换表单与您命名类型的方式不兼容(它必须包含一个更简单的表单,如单个单词).使用typedef:

typedef unsigned long ulong;
Run Code Online (Sandbox Code Playgroud)


Jac*_*ack 9

你为什么不只使用typedef?

typedef unsigned long ulong;
Run Code Online (Sandbox Code Playgroud)