了解#define的本质

Kun*_*mar 2 c

如果我写的东西像

#define INT_PTR int*
INT_PTR ptr4, ptr5, ptr6;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,只有ptr4是指向整数的指针,其余值(ptr5和ptr6)是整数.他们如何取整数值?它应该给出一些编译错误.

为什么这样编译器将ptr5和ptr6视为整数.

oua*_*uah 11

因为要声明指针对象,你会这样做:

int *ptr4, *ptr5, *ptr6;
Run Code Online (Sandbox Code Playgroud)

在C中,令牌*不属于类型信息,因此在声明多个对象时必须重复它.请注意,这是C中的常见错误.

你可以做的是typedef:

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