C 语言 宏 整理

开头的语句就是预处理命令

#define              定义一个预处理宏
#undef               取消宏的定义

#include             包含文件命令
#include_next        与#include相似, 但它有着特殊的用途

#if                   编译预处理中的条件命令, 相当于C语法中的if语句
#ifdef                判断某个宏是否被定义, 若已定义, 执行随后的语句
#ifndef               与#ifdef相反, 判断某个宏是否未被定义
#elif                 若#if, #ifdef, #ifndef或前面的#elif条件不满足, 则执行#elif之后的语句, 相当于C语法中的else-if
#else                 与#if, #ifdef, #ifndef对应, 若这些条件不满足, 则执行#else之后的语句, 相当于C语法中的else
#endif                #if, #ifdef, #ifndef这些条件命令的结束标志.
defined               与#if, #elif配合使用, 判断某个宏是否被定义

#line                 标志该语句所在的行号
#                     将宏参数替代为以参数值为内容的字符窜常量
##                    将两个相邻的标记(token)连接为一个单独的标记
#pragma               说明编译器信息

#warning              显示编译警告信息
#error                显示编译错误信息
#和##用于对字符串的预处理操作, 所以他们也经常用于printf, puts之类的字符串显示函数中.
#用于在宏扩展之后将tokens转换为以tokens为内容的字符串常量.
e.g.
#define TEST(a,b) printf( #a "<" #b "=%d\n", (a)<(b));
注意: #只针对紧随其后的token有效!
##用于将它前后的两个token组合在一起转换成以这两个token为内容的字符串常量. 注意##前后必须要有token.

语句中可以利用" \ "来换行.

把宏参数变为一个字符串,

用##把两个宏参数贴合在一起.

define A(x) T_##x

A(1)------〉T_1

define C(x) #x

C(1)------〉 "1 "

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C中的预编译宏定义 2009-02-10 作者: infobillows 来源:网络 在将一个C源程序转换为可执行...
    白水灬煮一切阅读 5,559评论 0 5
  • http://www.open-open.com/lib/view/open1390651437117.html ...
    Xtuphe阅读 5,049评论 0 10
  • 目录 一.预处理的工作方式... 3 1.1.预处理的功能... 3 1.2预处理的工作方式... 3 二.预处理...
    朱森阅读 5,285评论 0 2
  • 宏定义在C系开发中可以说占有举足轻重的作用。底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可...
    你好自己阅读 4,669评论 0 5
  • 话说,我真忘记我有久没有写剧本了。 当年几木剧社啊,我一手造就的孩子。 今天因为一些邀请,突然翻看以前。 请允许我...
    小Q童鞋就是我本人阅读 984评论 0 0

友情链接更多精彩内容