c语言 pragma指令,2.5 #pragma指令的使用(1)

2.5 #pragma指令的使用(1)

如果读者认真阅读了本书前面的代码,那么应该对#pragma指令有印象,在之前的代码中曾使用过#pragma指令来设置编译器的字节对齐方式。接下来看看预处理中的#pragma 指令,其作用是设置编译器的状态或指示编译器完成一些特定的动作。使用#pragma指令的一般形式为:#pragma  para

其中,para为参数。下面对一些常见的参数进行讲解。

(1)#pragma  message("消息")

至于“#pragma message("消息")”究竟有什么作用,可以通过下面的一段代码来了解其具体的使用方式。#include

#define STR

void main(int argc,char*argv)

{

printf("学习#pragma命令中message参数的使用!\n");

#ifdef STR

#pragma message("STR 已经定义过了")

#endif

return ;

}

在Linux环境下使用gcc编译运行的结果:root@ubuntu:/home# gcc message.c -o msg

message.c: In function 'main':

message.c:10:11: note: #pragma message: STR 已经定义过了

root@ubuntu:/home# ./msg

学习#pragma命令中message参数的使用!

我们发现,在编译的时候会打印出message参数中的信息。通过这种方式,可以在代码中输出想要的信息,也可以看某个宏是否已经被定义过。与之前使用printf()函数实现打印的不同之处在于:message打印消息出现在编译的时候,不会出现在程序最终的运行结果中;而printf()函数的打印消息却会出现在最终的运行结果中。有时候,我们并不希望运行结果中出现与结果无关的信息,这时可以使用#pragma命令,选择message参数来实现信息的打印输出。

(2)#pragma once

如果在头文件的开头部分加入这条指令,那么就能保证头文件只被编译一次。

(3)#pragma hdrstop

该指令表示编译头文件到此为止,后面的无需再编译了。

(4)#pragma  pack()

我们在此前的代码中已经接触过这个指令了,但是没有进行详细的讲解。接下来了解使用这个参数的几个典型应用,看看下面的代码。#include

void main(int argc,char*argv)

{

#pragma pack(2)

struct  _stu1{

char    name[20];

char    num[10];

int score;

char    sex;

}stu1;

printf("str1占用内存的大小为:%d个字节\n",sizeof(stu1));

#pragma pack()

struct  _stu2{

char    name[20];

char    num[10];

int score;

char    sex;

}stu2;

printf("str2占用内存的大小为:%d个字节\n",sizeof(stu2));

return ;

}

【责任编辑:book TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值