宏、预编译(day12)
作者:@herry1995
本文为作者原创,转载请注明出处:https://www.cnblogs.com/Kernel001/p/7735181.html
目录
指针数组里的每个存储区是一个指针类型 的存储区 字符指针数组里包含多个字符类型指针,其中 每个指针可以表示一个字符串 字符指针数组可以用来表示多个相关字符串 主函数的第二个参数是一个字符指针数组, 其中每个指针代表一个字符串,所有 这些字符串的内容都来自于用户的命令 主函数的第一个参数是一个整数,它表示 第二个参数里的指针个数 #define预处理指令可以用来定义宏 宏可以用来给数字起名字 定义宏的时候要把宏名称写在#define预处理 指令后,宏名称后写它所代表的数字 宏名称通常由大写英文字母构成 宏名称里不可以包含空格 用宏给数字起名字的时候不可以使用赋值 操作符 可以在程序里使用宏名称代表它所对应的数字, 编译器会把程序里的所有宏名称替换成 它所代表的数字 可以在编译命令里使用-D选项临时指定 宏所代表的数字 宏还可以给一个计算公式起名字 计算公式里包含未知数字,宏的参数用来 表示这些未知数字 编译器采用二次替换的方式处理带参数的宏 宏的参数不一定代表数字,所以它没有类型 如果宏有多个参数就需要用逗号把他们分开 宏不可以使用自己的存储区和函数进行数据 传递 宏没有形式参数也没有用来存放返回值的 存储区 能当作数字使用的宏必须编写成一个表达式 (因为宏没有用来记录返回值的存储区) 宏的参数直接代表函数的存储区,在宏里对 参数内容的修改可以直接影响函数 因为宏没有用来记录返回值的存储区,所以 不能保证优先计算宏里面的操作符 所有能当作数字使用的宏必须写在一对小括号 里面 宏没有形式参数所以不能保证优先计算参数 里面的操作符 编写宏的时候所有能当做数字使用的参数也都 必须写在小括号里面 不要把自增或自减的结果作为宏的参数使用 编写宏的时候可以使用一些特殊的符号,它们 叫做宏操作符 #是一个宏操作符,它可以把宏的参数转换 成字符串字面值 ##也是一个宏操作符,它可以把一个代表 标识符的参数和其他内容连接得到 一个新的标识符 条件编译可以在编译的时候从几组语句里 选择一组编译而忽略其他组 #ifdef/#ifndef...#else...#endif 以上结构可以根据一个宏名称是否被定义过 从两组语句中选择一组编译 最开始的预处理指令应该从两个里选择一个, 它们的后面都要跟着一个宏名称 如果选择#ifdef就表示它后面的宏名称被定义 过就编译前一组语句,否则编译后一组 语句 如果选择#ifndef就刚好相反 #if...#elif(任意多次)...#else...#endif 这个结构也可以实现条件编译,它可以根据 任意逻辑表达式从多组语句中选择一组 编译
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步