C语言部分知识点复习
位运算符
-
通过按位或操作,添加未处理的任务事件到任务事件数组。
tasksEent[idx] |= events
-
提取系统类事件
events & SYS_EVENT_MSG
-
清除系统类事件
events ^ SYS_EVENT_MSG
C语言编译过程
C语言要生成可执行程序,需要经过预处理、编译、汇编、和链接四部分。
(1)预处理
-
展开所有宏定义(#define),进行字符替换。
-
处理所有条件编译指令(#ifdef、#ifndef、#endif)
-
处理文件包含(#include),将包含的文件直接插入到语句所在处。
-
删除所有注释;
-
添加行号和文件标识,以便在调试和编译出错时快速定位到错误。
编译和预处理
-
#define 又称宏定义,标识符为所定义的宏名,简称宏。
-
不带参数的宏定义1
#define 标识符 字符串
#include<stdio.h> #define L 4 #define W int main(){ int area; area=L*W; printf("area=%d\n",area); return 0; }
-
不带参数的宏定义2
-
#define 标识符
-
-
不关注标识符被定义成了什么,只关注它是否被定义过
-
带参数的宏定义
-
#define 标识符(形参表)字符串
-
#include<stdio.h> #define SWAP(a,b) {int temp;temp=a;a=b;b=temp;} int main(){ int i,j; int a[5]={3,4,5,6,7}; int b[5]={5,6,7,8,9}; for(i=0;i<5;i++)SWAP(a[i],b[i]); printf(“After swaping:\n”); for(i=0;i<5;i++)printf(“%d”,a[i]); printf(“\n”); for(i=0;i<5;i++)printf(“%d”,b[i]); printf(“\n”); return 0; }
宏定义允许嵌套
#define PI 3.141592 #define P PI*x printf("%f",P)
-
宏替换后的语句为:
printf("%f"3.141592*x)
宏定义允许嵌套