hb328496536 发表于 2017-10-12 15:42:21

关于define 和 typedef 的两个问题

#definepin(int *)
pina, b;

typedefpin(int *);
pina, b;

老师代码1和代码2编译通不过呀

代码1改成
   #definepinint *
   pina;
   pin b ;
可以通过

代码2改成
typedefint*pin
pina, b;

可以通过;



求教到底什么问题

ba21 发表于 2017-10-12 17:39:10

define是宏替换,就是简单的替换。
typedef是类型取别名。

BngThea 发表于 2017-10-27 16:30:08

#definepin(int *)
相当于将代码中的所有 pin 替换为 (int *)
pina, b;
那么这一句被翻译为 (int*) a, b;
编译器表示看不懂啊~,尤其是b是什么,编译器翻译不了,所以不通过

typedefpin(int *);
相当于给pin起一个别名为(int *)
然而前提是编译器得认识 pin 是个什么东西,所以一般用typedef都会将已知的变量取别名,比如
typedef struct Student{..}STD;

sakana 发表于 2017-10-31 08:16:39

#define 和 typedef所定义的名称和实际内容的位置正好相反。
#define新名称内容
typedef 内容 新名称
页: [1]
查看完整版本: 关于define 和 typedef 的两个问题