c语言中的预处理命令.pptVIP

  • 4
  • 0
  • 约1.53千字
  • 约 11页
  • 2017-03-26 发布于贵州
  • 举报
c语言中的预处理命令c语言中的预处理命令

C语言中的预处理命令 #define #define macro-name char-sequence 作用:短字符串代替长字符串/增加可读写性 #undef指令删除一个宏定义 该语句没有分号。在标识符和串之间可以有任意个空格,串一旦开始,仅由一新行结束。 如果一个串长于一行,可在行尾用反斜线“\”续行 宏名定义后,即可成为其它宏名定义中的一部分 如何用#define定义“宏函数”?(比较内联函数) 操作符#和##的含义是什么? 预定义的宏 ● __DATE__:当前源程序的创建日期。 ● __FILE__:当前源程序的文件名称(包括盘符和路径)。 ● __LINE__:当前被编译代码的行号。 ● __STDC__:返回编译器是否位标准C,若其值为1表示符合标准C,否则不是标准C. ● __TIME__:当前源程序的创建时间。 重置行号和文件名命令:#line number[“filename”] 条件编译 #if,#ifdef,#ifndef,#elif,#else和#endif 常见用途: Debug版、Release版 多操作系统支持 防止重复包含 为什么在每个头文件都能见到 #define DEBUG 1 int main() { int i,j; char ch[26]; for(i=a;j=0;i=z;i++,j++) { ch[j]=i; #if DEBUG printf(ch[%d]=%c\n,j,ch[j]); #endif } ……. #define os win #if os=win #includewin.h #elif os=linux #includelinux.h #elif os=mac #includemac.h #endif 修改编译器设置命令 #pragma #pragma parameter #pragma message(消息文本) #pragma code_seg([“section_name”[,section_class]]) #pragma once #pragma warning(disable:4507 34) #pragma comment(…) #pragma pack(n) 产生错误信息命令 ------------#error #if __STDC__!=1 #error NOT ANSI C #endif C++模板 int max(int x,int y) {return(xy)?x:y ;} float max( float x,float y){return (xy)? x:y ;} double max(double x,double y) {return (cy)? x:y ;} template class T T min(T x,T y) { return(xy)?x:y;} 作业: 研究如下另个宏:(作用?原理?) #define offsetof(TYPE, MEMBER) ((size_t) ((TYPE \ *)0)-MEMBER ) #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)-member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );})

文档评论(0)

1亿VIP精品文档

相关文档