类型定义,定义#

som*_*har 2 c macros typedef

任何人都可以解释它们之间的区别

#define int* char
Run Code Online (Sandbox Code Playgroud)

typedef int* char;
Run Code Online (Sandbox Code Playgroud)

GMa*_*ckG 5

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

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

你不能重新定义这种类型char,所以这typedef是一个半身像.


如果你给出了合法的例子,这#define是一个预处理指令.它只在编译阶段之前进行文本替换.相反typedef定义一种新类型,新类型标识符就像任何其他类型一样尊重"规则".