|
【实训目的】学习条件编译
【第 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(陈海云) : 返回首页 |