网站建设要求 牛商网,实体店做网站有用吗,好的h5制作网站模板下载,二级目录 网站C Primer Plus阅读–章节16
翻译程序的第一步
预处理之前#xff0c;编译器必须对该程序进行一些翻译处理。
首先#xff0c;编译器将源代码中出现的字符映射到源字符集。第二#xff0c;编译器定位每个反斜杠后面跟着换行符的实力#xff0c;并删除他们。物理行的合并。…C Primer Plus阅读–章节16
翻译程序的第一步
预处理之前编译器必须对该程序进行一些翻译处理。
首先编译器将源代码中出现的字符映射到源字符集。第二编译器定位每个反斜杠后面跟着换行符的实力并删除他们。物理行的合并。编译器将文本呢划分成预处理记号序列、空白序列和注释序列。
预处理指令从#开始运行到后面的第一个换行符为止。指令的长度仅限于一行预处理开始之前编译器会把多个物理行处理为一个逻辑行。
使用替换提替代宏。
#define LIMIT 20
const int LIM 50;
static int data1[LIMIT]; //有效
static int data2[LIM]; //无效
const int LIM2 2 * LIMIT; //有效
const int LIM3 2 * LIM; //无效
//数组大小必须是整型常量、枚举常量和sizeof表达式不包括const声明的值
//const是ANSI的限定为用其修饰的变量为只读但也需要分配内存因此不符合常量的要求。使用宏参数创建字符串#运算符 将宏参数的形参名以字符串的形式进行替换
#define PSQR(X) printf(The square of #X is %d.\n, ((X)*(X)))PSQR(y);
PSQR(2 4)//输出
//The square of y is 25.
//The square of 2 4 is 36.预处理器粘合剂##运算符
#define XNAME(n) x ## n变参宏…和__VA_ARGS__
#define PR(...) printf(__VA_ARGS__)#define PR(x, ...) printf(Message #x : __VA_ARGS__)#line和#error #line指令重置__LINE__和__FILE__宏报告的行号和文件名。#error指令让预处理器发出一条错误指令在编译过程中中断 #pragma:将编译指令放入源代码。
#pragma c9x on泛型选择
#define MYTYPE(X) _Generic(X, \int: int, \float: float, \double: double, \default: other\
)inline函数C99
inline static void eatline(){while(getchar()! \n)continue;
}int main(){eatline();
}_NoreturnC11