//编译指令#pragma可以设定一些编译指令
//格式:
//#pragma 语言符号字符串
//语言符号字符串是给出特有编译器指令个参量的字符序列
//#pragma的后面可以编写翻译器作为预处理器语言符号分析的任何文本
//#pragma的参量从属于宏扩展。如果编译器找到一个不能识别的编译指示,将发出警告,但编译将继续。
//编译指示可以用在条件说明中,以提供新的预处理器功能,或提供定义的实现信息给编译器
#include"stdio.h"
#include"string.h"
//""引头文件的方式
//预处理程序首先在当前源文件所在目录下查找指定文件 如果找不到 则在C编译系统定义的标准目录下查找指定的文件
#include"stdio.h"
#pragma pack(1)
struct node1
{
int a;
char b;
int c;
};
#pragma pack(2)
struct node2
{
int a;
char b;
int c;
};
#pragma pack(4)
struct node3
{
int a;
char b;
int c;
};
struct node4
{
int a;
char b;
int c;
};
int main()
{
struct node1 n1;
struct node2 n2;
struct node3 n3;
printf("%d\n", sizeof(n1));
printf("%d\n", sizeof(n2));
printf("%d\n", sizeof(n3));
printf("%d\n", sizeof(struct node4));
return 0;
}
//pack指令设置对其长度,三种结构体的成员char b的对齐长度分别是1,2,4,所以结构体的总长度分别是9,10,12
//#pragma可以设定的指令很多,这里就不再赘述了
//#define USEMOBILE 1//定义USEMOBILE
//
//struct people
//{
// int id;
// char name[20];
// long long int mobile;
// int tel;
//}peng;
//int main()
//{
// peng.id = 2004101;
// strcpy(peng.name, "PengAolin");
// peng.mobile = 177761671746;
// peng.tel = 66666666;
//#ifdef USEMOBILE //如果定义了宏USEMOBILE
// printf("%d,%s,%lld\n", peng.id, peng.name, peng.mobile);
//#else
// printf("%d,%s,%d\n", peng.id, peng.name, peng.mobile);
//#endif
// return 0;
//}
编译指令#pragma
最新推荐文章于 2021-12-21 17:16:22 发布