你真的可以用C语言重新定义关键字吗?

时间:2015-01-21 04:00:32

标签: c keyword c-preprocessor

你能解释下面的代码吗?我们如何使用#define作为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

2 个答案:

答案 0 :(得分:7)

#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 *毫无意义。

答案 1 :(得分:0)

#define a b

会在#define

之后将源中的所有“a”更改为“b”
#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;
}