c - #define 为无符号长整型

标签 c macros c-preprocessor

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

#define ulong unsigned long
ulong idCounter = 0;

可悲的是,我认为它最终会用“unsigned”代替“ulong”,而不是“unsigned long”。我尝试了“#define ulong (unsigned long)”,但这也不起作用。

最佳答案

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

double x = calc();
ulong v = ulong(x);

在这种情况下,你会得到

unsigned long v = unsigned long(x);

这是无效的,因为使用的转换形式与您命名类型的方式不兼容(它必须由更简单的形式组成,例如单个单词)。使用类型定义:

typedef unsigned long ulong;

关于c - #define 为无符号长整型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1653332/

相关文章:

c - dsymutil 的 --flat 选项的预期用途是什么

optimization - 是否有可能/使用卫生宏进行编译时计算优化的例子是什么?

c - 如何在宏中将函数名称作为文本而不是字符串获取?

c - 使用预处理器语法获取 const char

haskell - 如何为名称中包含非字母字符的库定义 MIN_VERSION_𝑙𝑖𝑏 宏?

指向多个函数的 C 指针

php - 可通过 TCP 访问守护进程以保持 SSH session 打开、创建新 session 和发送命令

c - 为什么这段代码会出错?

C++ 策略类和命名空间

c - C 程序中不需要的输出