C_Learning (4)

/ 预处理命令
  / 宏定义
    / 一般形式:#define 宏名 字符串
      # 表示这是一条预处理命令
      宏名是一个标识符,必须符合C语言标识符的规定
      字符串可以是常数、表达式、格式化字符串等
    / 注意:
    (1)如果在串中含有宏名,则不进行替换
    (2)如果串长于一行,可在行末尾用"\"续行
    (3)#define 出现在程序中函数的外面,宏名的有效范围为整个源文件
    (4)可以用#undef 终止宏定义的作用域
    (5)宏定义时参数要加括号,如不加括号,有时会引起错误
    (6)宏扩展必须使用括号来保护表达式中低优先级的操作符

  / #include 指令
    / 在一个源文件中使用#include 指令可以将另一个源文件的全部内容包含进来,且被读入的源文件必须使用双引号或者尖括号括起来
    / 双引号与尖括号的区别
      尖括号:系统到存放C函数库头文件所在的目录中寻找要包含的文件
      双引号:系统先在用户当前目录中寻找要包含的文件,若找不到,再到存放C函数库头文件所在的目录中寻找要包含的文件[在双引号中给出文件路径]
    / 头文件
      / 一般情况下,可将如下内容放入 .h 头文件中
      (1)宏定义
      (2)结构、联合和枚举声明
      (3)typedef 声明
      (4)外部函数声明
      (5)全局变量声明

  / 条件编译
    / 一般情况下,源程序中所有的行都参加编译,但有时只希望对一部分内容在满足一定条件时才进行编译,就需要使用一些条件编译命令
    / #if 条件编译指令
    (1)
    #if 参数表达式
    程序段
    #endif
    (2)
    #if 参数表达式1
    程序段1
    #else
    #if 参数表达式n
    程序段n
    #endif(n个)
    (3)
    #if 参数表达式1
    程序段1
    #elif 参数表达式n
    程序段n
    #endif
    如果参数表达式为真,则编译#if 和 #endif 之间的程序段,否则跳过不编译
  / #ifdef 条件编译指令
    #ifdef 宏替换名——如果宏替换名已被定义,则对语句段进行编译
    #ifndef 宏替换名——如果宏替换名未定义,则对语句段进行编译


  / #line 条件编译指令
    #line 用于改变 _LINE_ 与 _FILE_ 的内容,_LINE_ 用于存放当前编译行的行号,_FILE_ 用于存放当前编译的文件名
    #line 行号["文件名"]

  / #pragma 条件编译指令
    #pragma 的作用是设定编译器的状态,或者指示编译器完成一些特定的操作
    #pragma 参数
      参数包括:
      (1) Message: 在编译信息输出窗口中输出相应的信息
      (2) code_seg: 设置程序中函数代码存放的代码段
      (3) once: 保证头文件被编译一次

  / 预定义宏名
    _LINE_    当前被编译代码的行号
    _FILE_    当前源程序的文件名称
    _DATA_    当前源程序的创建日期
    _TIME_   当前源程序的创建时间
    _STDC_    判断当前编译器是否为标准C,若其值为1表示符合,否则不符合

posted @ 2013-10-23 17:09  Jan5  阅读(352)  评论(0编辑  收藏  举报