2024年物联网嵌入式最全C语言#pragma使用方法_c pragma,2024年最新物联网嵌入式开发面试题整理最新

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

#define VERSION “Android 4.0”
#else
#error Compile Version is not provided!
#endif

int main()
{
printf(“%s\n”,VERSION);
return 0;
}


终端输出:


###### 


看见没,编译的时候输出#pragma message信息,运行的时候根本看不见,你们可以通过预处理命令,看下是否在预处理阶段处理了,gcc -E test.c -o test.i  然后找到test.i文件,双击用gedit打开


![](https://img-blog.csdn.net/2018060117102198?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdWNodW5qaWUxMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)  



看见没,预处理根本没处理#pragma message指令,所以#pragma message指令是在编译器处理的


######  2、#pragma once:指示编译器头文件被编译一次



#include <stdio.h>
#include “test.h”
#include “test.h”

int main()
{
printf(“g_value = %d\n”,g_value);
return 0;
}


test.h文件内容:



#pragma once

int g_value = 10;


看下终端输出:


![](https://img-blog.csdn.net/20180601170623374?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdWNodW5qaWUxMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)  



######         3、#pragma pack:指定内存对齐



#include <stdio.h>

#pragma pack(2)
struct test1
{ //对齐参数 偏移地址 大小
char c1; //1 0 1
char c2; //1 1 1
short s; //2 2 2
int i; //2 4 4
};
#pragma pack()

#pragma pack(4)
struct test2
{ //对齐参数 偏移地址 大小
char c1; //1 0 1
short s; //2 2 2
char c2; //1 4 1
int i; //4 8 4
};
#pragma pack()

#pragma pack(8)
struct S1
{ //对齐参数 偏移地址 大小
short s; //2 0 2
long l; //4 4 4
};
struct S2
{ //对齐参数 偏移地址 大小
char c; //1 0 1
struct S1 d; //4 4 8
double e;//理论//8 16 8 这里实际是错误的,gcc不支持8字节对齐,所以这里默认是4字节对齐 //实际//4 12 8 所以整个占用内存是20字节
};
#pragma pack()

int main()
{
printf(“sizeof(struct test1) = %d\n”,sizeof(struct test1)); //输出8
printf(“sizeof(struct test2) = %d\n”,sizeof(struct test2)); //输出12

printf("sizeof(struct S1) = %d\n",sizeof(struct S1));        //输出8
printf("sizeof(struct S2) = %d\n",sizeof(struct S2));        //理论计算应该输出24  但是实际打印输出是20   这是因为gcc不支持8字节内存对齐,所以这里是默认4字节对齐,
return 0;

}


看下终端打印输出:


![](https://img-blog.csdn.net/20180603183919397?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdWNodW5qaWUxMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)  





![img](https://img-blog.csdnimg.cn/img_convert/7cea7e50cb15f61e09dcff48909f9f5e.png)
![img](https://img-blog.csdnimg.cn/img_convert/0e1f3574cd3906ea9d9dbb3b330e55ec.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值