C语言-预编译
2016-07-14 01:37
441 查看
define: 替换、宏函数、宏展开 不管情况,直接替换 替换字符一般大写 经常改变的常量可以用define来简化 #define N 10 #define NM (2+8) #define f(x) x*x #define pf(y) printf("%d", y) 标识连接符: 1. # 相当于加了双引号 #define f(x) printf("%s", #x); int num = 0; f(num); put: num 2. ## #define a(x) a##x int a1 = 10; int a2 = 20; int a2 = 30; a(1) = 39; int i = 1; while (i < 4) { printf("%d", a(i)); i++; } put : 39, 20 , 30 void runall() { printf("%d", 1000); } #define run(x) run##x run(all)(); 3. #@ 相当于加单引号 #define a(x) #@x putchar(N(A)); put : A undef: 取消define的作用域 #undef N include: #include <> 从系统目录开始找 #include "" 先从当前目录找, 再找系统目录 if else endif: 选择性编译 #define NNN 1 #if NNN == 1 printf("1"); #else printf("0"); #endif 重复包含 //不存在时 #ifndef X #define X 100 #endif //存在时 #ifdef N #endif error: 自写一个错误,编译时提示 pragma: #pragma message("编译时提示消息内容"); #pragma once //当前文件在项目中只包含一次 #pragma comment(lib, "Urlmon.lib") //加载链接库 #pragma warning(disable:4996) //屏蔽错误 #pragma warning(once:错误号) //警告/错误 只显示一次 #pragma warning(error:错误号) // 把错误号信息当做一个错误 #pragma warning(default:错误号) #pragma warning(push) //让一个 warning生效 #pragma warning(pop) //弹出坠湖一个警告信息,在入栈和出栈之间所作的 #pragma pack(1) //设置结构器字节对其 参数只有 1 2 4 8 16 #pragma date_seg() //检测进程运行次数 #pragma data_seg("exe_name") int current_exe = 0; #pragma data_seg() #pragma comment(linker, "/SECTION:exe_name,RWS") if (current_exe > 0) { printf("程序只能运行一个"); exit(1); } #pragma deprecated() //限制函数作用域 #pragma deprecated(run1, run2) //限制函数run1 run2接下来不可使用 #pragma push_macro("Y") //将Y当前的值吃进 #pragma pop_macro("Y") //将之前吃入的Y还原 #define y 10 #pragma push_macro("Y") //将Y当前的值吃进 #define y 20 #pragma pop_macro("Y") //将之前吃入的Y还原 #pragma setlocale() //设置当前文件编码 #include <locale.h> #pragma setlocale("chs") //经常放在第一行 #pragma intrinsic() //设置内联还输 #pragma function() //取消内联函数 #pragma inline_depth() //设置内联深度 #pragma inline_recuresion() // 内联开关 on oFF #pragma hdrstop() // 设置预编译头 #pragma auto_inline() // 是否自动内联 on off #pragma check_stack() // 自动检查栈 on off 判定会不会发生栈溢出 缓冲区设置: 缓冲区有三种方式 满缓冲,满了在写 行缓冲,一行就写 无缓冲 setvbuf(); //设置缓冲区 #define _IOFBF 0x0000 full 缓冲区满了再干活 #define _IOLBF 0X0040 line 行缓冲 #define _IONBF 0X0004 no 无缓冲 char str[4096] = {0}; setvbuf(stdout, str, _IOFBF, 4096); fprintf(stdout, "hello world"); fflush(stdout); __LINE__: 当前代码所在行 __TIME__: 代码编译时间 __DATE__: 代码编译时间 __FILE__: 当前文件名 __FUNCTION__: 函数名
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言判断一个数是否是2的幂次方或4的幂次方
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- C语言实现选择排序、冒泡排序和快速排序的代码示例