共性:都以#开头

一、宏定义

特性:
1)实现函数功能,比函数效率更高。

1.#define怎么将多个常量字符串连接起来

https://blog.csdn.net/baowxz/article/details/99678718
使用空格或者""隔开

2.#与##

https://blog.csdn.net/u012351051/article/details/101038899/
https://www.jb51.net/article/245053.htm

  • 运算符用于在预处理期将宏参数转换为字符串

  • 运算符用于在预处理期粘连两个标识符

3.系统预定义调试宏

https://blog.csdn.net/u013171226/article/details/107680392

4.系统特殊宏

https://blog.csdn.net/CSDNjoker/article/details/127857328

https://blog.csdn.net/tjcwt2011/article/details/132217047 (干脆利落)

  • 可变参数宏__VA_ARGS__,用于打印日志。

  • CRYPTO_ALIGN (字节对齐)

5.判断宏的值

#if ( LOCK == 1 )
    cout<<"lock demo"<<endl;
    pthread_mutex_init(&m_Lock, NULL);
#else
    cout<<"unlock demo"<<endl;
#endif

二、文件包含

1)include 指令不关心所包含的文件名是啥,只是原方不动地将所包含的文件内容在此处展开。
2)在头文件中的内容是什么都可以,未必一定要是函数声明,你愿意的话完全可以把函数定义在头文件中,而且也可以不用.h 作为文件名。来

  • 双引号与尖括号引用的区别
    使用尖括号,系统就会到默认路径下去搜索该头文件。搜索到头文件后,找到其中被调函数的声明,再到另一默认文件中找该函数体的实现。

三、条件编译

特殊用法

四、pragma (编译器控制指令)

https://www.cnblogs.com/libolin/p/8084362.html
https://cloud.tencent.com/developer/article/2306409

1.字节对齐(#pragma pack)

https://www.cnblogs.com/southcyy/p/10175163.html
https://www.cnblogs.com/The-explosion/articles/17784923.html

判断本文件是否是cpp源文件

__cplusplus

分类: 基础

0 条评论

发表回复

您的电子邮箱地址不会被公开。