部分实用C/C++语法总结_190519

预编译命令

在C语言的预处理命令中,这些命令可以将别的源码内容插入到直指定的位置,可以标识出只有在特定的条件下才会被编译某一段的程序代码;可以配合定义类似标识符功能的宏定义,在编译时,预处理就会用别的文本来代替这个宏,来决定是否编译本段内容的代码,这种做法可以避免项目开发过程中,模块越来越多造成的代码量越来远大,从而导致代码量大,编译慢,甚至超出MCU的内存。

每个预处理命令均为独占一行,以#字符作为开头(头文件),并且只有空制表符(Tab)和空格符(space)才能出现在#号前面,接下来将几个常用到的命令。

1,嵌套的#include命令

在大型复杂的工程中,通常会将功能模块和层次分得特别清晰,也就是说一个应用层的实现文件可能依赖数几十个头文件才能完成,但是在一些接口层的实现过程中,通常会依赖大量可重复使用的数据类型转换工具接口,这种工具类的接口通常最容易被重复包含,可能来自同级的接口间同时包含,然后被某个应用层一起包含,或者应用层开发者不了解情况下直接将已经在接口层中包含过的工具接口,再次重复包含,这样在编译过程中是肯定会报出重复编译的。这个问题通常不难解决,删除掉重复包含的地方即可,但是需要一层一层的逐个文件筛选,比较占用开发时间。然而可以通过采用条件编译命令,方便多次包含相同的文件!

例如:
	#ifndef  INCFILE_H_
	#define INCFILE_H_
	/*

	/*
	#endif  /*      INCFILE_H_    */

2,#progma命令

最新的GNU C编译器和微软Visual C编译器都支持#progma pack(n),它使得编译器让结构成员对齐到特定的字节边界。

例字:
	#if defined(_GNUC_) || define(_MSC_VER)
		#progma pack(1)					//对其字节,没有填充
	#endif
	
其他:
 		 #progma pack(2)     //把结构成员对其到偶数地址
		 #progma pack(4)     //把结构成员对其到4的倍数地址


其他关于系统多线程内容,需要结合系统平台说明吧,主要关注创建启动线程/线程共享数据/互斥/线程通信等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值