你能解释下面的代码吗?我们如何使用#define
作为关键字C?你真的可以用C语言重新定义关键字吗?
#include <stdio.h>
#define int int*
int main(void) {
int *p;
int q;
p = 10;
q = 5;
printf("%d %d", p, q);
// your code goes here
return 0;
}
输出:
10 5
你能解释下面的代码吗?我们如何使用#define
作为关键字C?你真的可以用C语言重新定义关键字吗?
#include <stdio.h>
#define int int*
int main(void) {
int *p;
int q;
p = 10;
q = 5;
printf("%d %d", p, q);
// your code goes here
return 0;
}
输出:
10 5
这#define int int*
是一个预处理宏。如果要为类型定义自己的同义词,请使用typedef
。您无法使用您未创建的语言创建关键字。
样品:
#include <stdio.h>
typedef int * myIntPtr;
int main(void) {
int i = 10;
myIntPtr x = &i;
printf("%d", *x);
return 0;
}
输出:
10
而且在语义上作出的int
到int *
是没有意义的。
“typedef”不是简单地创建同义词吗?我的意思是'int *'是预定义的,任何'struct'你会使用'typedef'必须由用户定义? – 2015-01-21 04:07:01
@ shree.pat18 - 是的,我的陈述是误导 - 纠正它。 – Sadique 2015-01-21 04:08:43
#define a b
将改变所有 “A” 到 “B”,在你的源程序中#define后
#include <stdio.h>
#define int int*
int main(void) {
int *p;
int q;
p = 10;
q = 5;
printf("%d %d", p, q);
// your code goes here
return 0;
}
将变更为
int main(void) {
int **p;
int *q;
p = 10;
q = 5;
printf("%d %d", p, q);
// your code goes here
return 0;
}
那不是定义关键字。这是一个宏观。 https://msdn.microsoft.com/en-us/library/teas0593.aspx – 2015-01-21 04:01:54
您无法定义关键字。 – 2015-01-21 04:02:09
'#define int int *' - 男性因犯罪较少而死亡。打开你的编译器警告。这段代码是假的。 – 2015-01-21 04:08:55