c - 类型定义,#define

标签 c macros typedef

谁能解释一下

#define int* char

typedef int* char;

最佳答案

没有区别,因为两者都是非法的。

int* 不是宏的有效标识符,即使您放入空格,int 也不是,因为它是一个关键字并且是保留的。即使您将它切换为您可能想要的 #define char int*,它也会因为同样的原因而失败。

而且您不能重新定义类型 char,所以 typedef 是一个半身像。


不同之处在于,如果您给出的示例是合法的,那么 #define 是一个预处理指令。它只在编译阶段之前进行文本替换。相反,typedef 定义了一个新类型,并且该新类型标识符像任何其他类型一样遵守“规则”。

关于c - 类型定义,#define,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3316474/

相关文章:

C++ : Make multiple constructors with the same argument types

c - 一个递归函数,在c中查找数组的总和

c - 从目标文件生成头文件

dictionary - 在 Julia 中将 Dict 转换为 DataFrame

c++ - 使用C/C++宏生成函数签名

c - Structs 中的 Structs 按顺序排列

c - seq_file 接口(interface)中是否有与 C 的 setbuf 等效的功能?

c++ - 如何创建低影响计时器

对 C 宏扩展和整数运算感到困惑

c++ - 是否可以将枚举注入(inject)类范围/命名空间?