您当前的位置:《c语言程序设计》听课笔记:16
《c语言程序设计》听课笔记:16
n*n=i+4*i+4=1+4+4=9,不能达到预期效果
所以 最好把每个形参也用圆括号括起来。如:#define  square(n)((n)*(n)) 则经宏扩展后变为:((i+4)*(i+4))
取消已有的宏定义:#undef,在undef后出现的宏将不再被扩展
二、文件包含:一个源文件可将另一个源文件的所有内容包含进来
一般形式:#include“文件名”(从当前目录中寻找文件,找不到再去一系列系统预先设定的目录中寻找,可普遍使用)
                 或 #include<文件名>(不在当前目录中寻找,径直到一系列系统预先设定的目录中寻找)
ps:1、头文件之所以成为头文件,是因为#include命令常出现在源文件头部
       2、C本身包含很多头文件
            stdio.h(输入输出函数)     
            string.h(字符串)
            math.h(数学函数)
       3、一个#include只能指定一个被包含的文件
       4、#include可以嵌套不可递归
 三、条件编译:有时希望程序中的一部分只有在满足一定条件时才进行编译,否则不参与编译
一般形式:
1、如果常量表达式为真,非零,则相应程序段被编译,否则跳过它
     #if 常量表达式
          程序段
     #endif
常量表达式是在编译时求值的,因此他只能由事先定义的宏名和常量组成,不能出现变量
2、如果常量表达式为真,非零,则程序段1被编译,否则编译程序段2
     #if 常量表达式
          程序段1
     #else
          程序段2
3、#if 常量表达式1
          程序段1 
     #elif 常量表达式2
            程序段2 
             ∶
          #elif 常量表达式n
                 程序段n
         #else
                程序段n+1
        #endif
4、如果已经定义了相应的“宏名”,则编译程序段,否则跳过
     #ifdef  宏名
         程序段 
     #endif
5、如果已经定义了相应的“宏名”,则编译程序段1,否则编译程序段2
     #ifdef 宏名
          程序段1
     #else
         程序段2
     #endif
6、如果没有定义相应的“宏名”,则编译程序段,否则跳过
     #ifudef  宏名
              程序段
     #endif
7、如果没有定义相应的“宏名”,则编译程序段1,否则编译程序段2
#ifudef 宏名
       程序段1
#else
       程序段2
#endif





   
 
收藏状态
收藏本课程的同学
相关课程