一、宏定义 #define #undef #ifdef #ifndef
1、#define MAX(a,b) (((a)>(b))?(a):(b)) 括号要加上哦
#define SQ(y) ((y)*(y))
二、文件包含 #include
一般形式: #include “文件名”
或#include <文件名>
三、条件编译 #if--#else--#elif--#endif等
对于头文件,我们通常使用#ifndef--#define--#endif来防止头文件的重复包含。
四、其他宏定义 #line #error #pragma
1、defined操作符的一般形式如
defined macro-name
define与#ifdef:
#if defined MY
或
#ifdef MY
感叹号”!”来反转相应的条件
#if !defined DEBUG
Printf(“Final Version!\n”);
#endif
2、操作符#通常称为字符串化的操作符
#include <stdio.h>
#define mkstr(s) #s
int main(void)
{
printf(mkstr(I like C));
return 0;
}
3、“##”可以把两个独立的字符串连接成一个字符串
#include<stdio.h>
#define SORT(X) sort_function # # X
void main(void)
{
char *array;
int elements,element_size;.
SORT(3) (array,elements,element_size);
}
4、
__DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字)
1、#define MAX(a,b) (((a)>(b))?(a):(b)) 括号要加上哦
#define SQ(y) ((y)*(y))
二、文件包含 #include
一般形式: #include “文件名”
或#include <文件名>
三、条件编译 #if--#else--#elif--#endif等
对于头文件,我们通常使用#ifndef--#define--#endif来防止头文件的重复包含。
四、其他宏定义 #line #error #pragma
1、defined操作符的一般形式如
defined macro-name
define与#ifdef:
#if defined MY
或
#ifdef MY
感叹号”!”来反转相应的条件
#if !defined DEBUG
Printf(“Final Version!\n”);
#endif
2、操作符#通常称为字符串化的操作符
#include <stdio.h>
#define mkstr(s) #s
int main(void)
{
printf(mkstr(I like C));
return 0;
}
3、“##”可以把两个独立的字符串连接成一个字符串
#include<stdio.h>
#define SORT(X) sort_function # # X
void main(void)
{
char *array;
int elements,element_size;.
SORT(3) (array,elements,element_size);
}
4、
__DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字)
__FILE__ 代表当前源代码文件名的字符串文字
__FUNCTION__ 代表当前源代码的函数名
__LINE__ 代表当前源代码中的行号的整数常量
__TIME__ 源文件编译时间,格式微“hh:mm:ss”