【实训6-4】条件编译
(总分25)


 【实训目的】学习条件编译   

【第 1 步】实训内容介绍

 实训内容:学习条件编译。
 前置条件:基本掌握一般的编程
 实训过程:
         1. 实训内容介绍
         2. 条件编译例子
         3. 文件包含中的问题
         4. 用条件编译来解决文件包含中的问题
         5. 实训结束

【Jitor 校验第 1 步】我已阅读实训内容介绍 // 送分题。直接点击。

 

 

【第 2 步】条件编译例子

 1、在项目 cpp6 中创建名为 cpp6_4 的源代码文件,如果项目不存在,则先创建项目,然后创建源代码文件。
 2、将下述代码复制到刚刚创建的 cpp6_4 中:

#include <iostream.h>

#define DEBUG

void main(void) {
         int debug = 1;

         // 条件语句,根据变量的值,决定是否输出
         if(debug){
                  cout << "{如果是调试模式}:打印出各个变量的值.....\n";
         }

// 条件编译,根据宏定义是否存在,决定是否将这行语句编译到可执行文件中
#ifdef DEBUG
         cout << "{调试模式}:打印出各个变量的值.....\n";
#endif

}

 阅读代码中的注释,以及通过直接运行或修改后运行,使输出的内容有所不同,在运行过程中理解条件编译与条件语句的区别。

【Jitor 校验第 2 步】 // 复制上面的代码到 VC++ 6.0 ,保存并运行。点击。

 

 

【第 3 步】文件包含中的问题

 这一步是另外一个例子,编写下述两个文件:
 1、编写一个名为 header.h 的头文件,内容如下:

int add(int x, int y){
         return x + y;
}

 2、将 cpp6_4 的代码改为如下:

#include <iostream.h>
#include "header.h"
#include "header.h"

void main(void) {
         cout << "调用 add 函数: " << add(3, 5) << endl;
}

 这时将出现编译错误:

Compiling...
cpp6_4.cpp
d:\vc60\cpp6\header.h(1) : error C2084: function 'int __cdecl add(int,int)' already has a body
Error executing cl.exe.

cpp6.exe - 1 error(s), 0 warning(s)

 原因是两次包含了同一个文件,导致函数的重复定义。

【Jitor 校验第 3 步】 // 复制上面的代码到 VC++ 6.0 ,保存并运行。点击。

 

 

【第 4 步】用条件编译来解决文件包含中的问题

 前一步两次包含同一个文件是很明显的,由于允许嵌套包含文件,导致有时却很难发现重复包含,甚至有时还必须重复包含, 这时,解决的办法就是采用条件编译,在头文件加上条件编译,代码见█████

代码如下:
// 下面代码写在: header.h 这个头文件内。
// 从下一行开始复制。
#ifndef HEADER_H
#define HEADER_H

int add(int x, int y){
         return x + y;
}

#endif
// 一直复制到上一行结束。

【Jitor 校验第 4 步】 // 复制上面的代码到 VC++ 6.0 ,保存并运行。点击。

 

 

【第 5 步】实训总结

 本次实训学习了条件编译,以及用条件编译来解决文件包含中的问题。 

【Jitor 校验第 5 步】我已阅读实训总结 // 送分题。直接点击。

 

仍有疑问 ? 联系QQ 9429444(陈海云) : 返回首页