1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > define不是c语言语句 define是语句

define不是c语言语句 define是语句

时间:2019-07-05 16:20:14

相关推荐

define不是c语言语句 define是语句

关于define 语句

#define最后加不加分号跟define本身没有关系,而取决于你使用的地方。

如:

#define MY_VALUE 5;

如果这样用:

int x =MY_VALUE; //没有问题,相当于int x=5;; 注意是两个分号罗

但这样用:if(x == MY_VALUE ) //这样用有问题,因为其相当于:if(x==5;)

明白了么?实际#define 只是起替换的作用。

还有个比较经典的例子是。

#define TEST(x) (x)*(x)

那么 int x=5;

int y= TEST(++x); //y的值是多少? 36? 错了,是 (++x)*(++x)=6*7=42

帮我看看这个define语句什么意思

一个概念性问题:#define是预处理命令,不是语句。

作为预处理命令,#define只能在一行内有效。因此需要用续行符\连接不同行。

预处理器进行断行连接后,#define SetDispatchTableEntry(ui32Index, pfFunction) \ _SetDispatchTableEntry(PVRSRV_GET_BRIDGE_ID(ui32Index), #ui32Index, (BridgeWrapperFunction)pfFunction, #pfFunction)变成#define SetDispatchTableEntry(ui32Index, pfFunction) _SetDispatchTableEntry(PVRSRV_GET_BRIDGE_ID(ui32Index), #ui32Index, (BridgeWrapperFunction)pfFunction, #pfFunction)(这里显示可能会有些问题,实际上是同一行。)这样大段代码可以分行写,可读性良好。

在断行连接后,预处理器进行#define定义的宏的替换。带参数的宏替换中有两个特殊的操作符,#和##,前者可以把记号(token)转换成字符串字面量,后者可以连接两个记号。

对于#,接以上的例子:#define SetDispatchTableEntry(ui32Index, pfFunction) _SetDispatchTableEntry(PVRSRV_GET_BRIDGE_ID(ui32Index), #ui32Index, (BridgeWrapperFunction)pfFunction, #pfFunction)对于SetDispatchTableEntry(123, foo),会替换成:_SetDispatchTableEntry(PVRSRV_GET_BRIDGE_ID(123), "foo", (BridgeWrapperFunction)foo, "foo")。注意宏替换不检查语义,如果有类型不匹配之类的编译错误,之后才会提示出来。

对于##,例子如下:#define join(a, b) a##bjoin(x,y)被替换为xy。====[原创回答团]。

在C语言中define是不是关键字

在C语言中define不是关键字。define是编译器的预编译指令,是编译器实现的,不是C语言的内容。

C语言中的关键字及意义如下:

auto 局部变量(自动储存)

break无条件退出程序最内层循环

case switch语句中选择项

char单字节整型数据

const定义不可更改的常量值

continue中断本次循环,并转向下一次循环

default switch语句中的默认选择项

do 用于构成do。..while循环语句

double定义双精度浮点型数据

else构成if。..else选择程序结构

enum枚举

extern在其它程序模块中说明了全局变量

float定义单精度浮点型数据

for构成for循环语句

goto构成goto转移结构

if构成if。.else选择结构

int基本整型数据

long长整型数据

registerCPU内部寄存的变量

return用于返回函数的返回值

short短整型数据

signed有符号数

sizoef计算表达式或数据类型的占用字节数

static定义静态变量

struct定义结构类型数据

switch构成switch选择结构

typedef重新定义数据类型

union联合类型数据

unsigned定义无符号数据

void定义无类型数据

volatile该变量在程序中执行中可被隐含地改变

while用于构成do。while或while循环结构

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。