luqingfei@C++
为中华之崛起而崛起!
兼听则明,偏听则暗。
程序文件和预处理器指令习题
共有4道题。
1,有一个程序调用了两个函数print_this(const string& s)和print_that(const string& s),这两个函数又调用第三个函数print(const string& s),输出传送给它的字符串。
在4个源文件中实现这3个函数和main()函数,并提供3个头文件,分别包含print_this()、print_that()和print()的原型。确保头文件只包含一次,main.cpp包含的#include语句数量最少。
2,修改上题的程序,使print()函数使用一个全局整数变量来计算它被调用的次数。在main()调用print_this()和print_that()后,输出这个变量的值。
3,在print.h头文件中,删除print()的已有原型,再创建两个命名空间print1和print2,每个命名空间都包含一个函数print(const string& s)。这些函数都有相同的函数签名,区分它们的唯一方式是命名空间的名称。在print.cpp文件中实现这两个函数,输出命名空间的名称和字符串。
现在让print_this()调用在命名空间print1中声明的函数,让print_that()调用在命名空间print2中声明的函数。运行程序,验证是否调用了正确的函数。
提示:从上面可以看出,在print_this()和print_that()中调用print()函数有三种不同的方式(即三种不同的语法形式)。
4,修改main()例程,只有定义了预处理器符号DO_THIS,才能调用print_this()。否则,就调用print_that()。
修改代码,定义一个宏PRINT(),在定义了DO_THIS后,就让PRINT(abc)——注意没有引号——调用print_this("abc"),否则就调用print_that("abc")。
--------
4道题的代码结构差不多,每道题都运用了一些C++的基本技巧:
有函数原型的声明,头文件的包含,避免重复定义,命名空间的使用,用预处理器指令来控制代码块等等技巧。
太懒了。
现贴出最终后一题的代码,其它的都差不多。这些都是比较基础,哈哈,我刚学C++几个月,大家不要笑我。
把这些基础的东西贴在这里,留着我以后复习。哈哈!
print.h
//
print.h
#ifndef PRINT_H
#define
PRINT_H
#include
<
iostream
>
#include
<
string
>
using
std::
string
;
namespace
print1
{
void
print(
const
string
&
s);
}
namespace
print2
{
void
print(
const
string
&
s);
}
#endif
print.cpp
//
print.cpp
#ifndef PRINT_CPP
#define
PRINT_CPP
#include
<
iostream
>
#include
<
string
>
#include
"
print.h
"
using
std::cout;
using
std::endl;
using
std::
string
;
void
print1::print(
const
string
&
s)
{
cout
<<
"
print1:print():
"
<<
s
<<
endl;
}
void
print2::print(
const
string
&
s)
{
cout
<<
"
print2:print():
"
<<
s
<<
endl;
}
#endif
printthat.h
//
printthat.h
#ifndef PRINTTHAT_H
#define
PRINTTHAT_H
#include
<
iostream
>
#include
<
string
>
using
std::
string
;
void
print_that(
const
string
&
s);
#endif
printthat.cpp
//
printthat.cpp
#ifndef PRINTTHAT_CPP
#define
PRINTTHAT_CPP
#include
<
iostream
>
#include
<
string
>
#include
"
printthat.h
"
#include
"
print.h
"
using
std::
string
;
void
print_that(
const
string
&
s)
{
print2::print(s);
}
#endif
printthis.h
//
printthis.h
#ifndef PRINTTHIS_H
#define
PRINTTHIS_H
#include
<
iostream
>
#include
<
string
>
using
std::
string
;
void
print_this(
const
string
&
s);
#endif
printthis.cpp
//
printthis.cpp
#ifndef PRINTTHIS_CPP
#define
PRINTTHIS_CPP
#include
<
iostream
>
#include
<
string
>
#include
"
printthis.h
"
#include
"
print.h
"
using
std::
string
;
void
print_this(
const
string
&
s)
{
print1::print(s);
}
#endif
main.cpp
//
main.cpp
#include
<
iostream
>
#include
<
string
>
using
std::
string
;
#include
"
printthis.h
"
#include
"
printthat.h
"
//
#define DO_THIS
#ifdef DO_THIS
#define
PRINT(arg) print_this(#arg)
#else
#define
PRINT(arg) print_that(#arg)
#endif
void
main()
{
PRINT(abc);
}
posted on 2009-02-18 16:26
luqingfei
阅读(436)
评论(0)
编辑
收藏
引用
所属分类:
C++基础
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
使用lib.exe生成.lib文件
如何区分导入库和静态库
lib文件
[转]动态链接库、静态库、import库区别
智能指针auto_ptr运用实例:常数型智能指针的特性
智能指针auto_ptr运用实例:移转拥有权的行为
C++入门经典:(一)基本概念
make工具的用法
什么是Makefile
虚函数、多态性 练习题一
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2009年2月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
统计
随笔 - 105
文章 - 0
评论 - 31
引用 - 0
留言簿
(6)
给我留言
查看公开留言
查看私人留言
随笔分类
(109)
ACM/ICPC(3)
(rss)
Books(4)
(rss)
C++基础(31)
(rss)
MFC
(rss)
Win32汇编程语言序设计(21)
(rss)
Windows(6)
(rss)
Windows SDK
(rss)
反汇编(1)
(rss)
汇编语言基础学习(22)
(rss)
计算机基础知识(3)
(rss)
开发工具(1)
(rss)
软件工程(4)
(rss)
生活(1)
(rss)
数据结构与算法(5)
(rss)
团队(1)
(rss)
文摘(3)
(rss)
游戏开发(3)
(rss)
随笔档案
(105)
2013年7月 (4)
2012年5月 (3)
2011年2月 (1)
2011年1月 (2)
2010年11月 (7)
2010年10月 (2)
2010年9月 (10)
2010年8月 (34)
2010年7月 (11)
2010年6月 (3)
2009年4月 (5)
2009年3月 (10)
2009年2月 (13)
Blogers
batch 共享空间
Codes of Sephiroth
doing5552
flyman
itech
jackyxinli
玩音频播放器的猫咪
kevinlynx
lai3d
luqingfei@.net
megax
mzty
netboy
oxft
汇编高手
SpringSnow
tonykee
tx7do
盖莫游戏引擎
汇编语言 - IT群技术论坛
孔雀
轮子哥
罗朝辉(飘飘白云)
帅子
我住包子山
小时候可靓了
游戏大观
站在大世界
Game
17173
游戏开发资源网
Life
刘思妍
青青精品儿童服饰
清泉户外网
小辉的视频库
NodeJs
Node入门
Python
Python
Useful Webs
80x86汇编语言
boost.org
VC 驿站
woaidongmao
山地车
编程爱好者
科学网
农行贷款计算器
思维导图
大牛
云风的 BLOG
搜索
积分与排名
积分 - 207575
排名 - 126
最新评论
1. re: 虚函数、多态性 练习题一
评论内容较长,点击标题查看
--luz
2. re: Win32汇编--图形操作--GDI原理
感谢
--11
3. re: Win32汇编--需要了解的基础知识
哇,哥,连书里的内容都打上了,这花了不少时间吧
。。。。。。
--solq
4. re: [转]各种字符编码方式详解及由来(ANSI,GB2312,GBK,UNICODE,UTF-8)
哥们写得不错,易懂
--wsh
5. re: 类继承练习题一
评论内容较长,点击标题查看
--scor
6. re: Win32汇编--图形操作--GDI原理
好,十分有用
--Jet
7. re: 数学的魅力:取余运算还可以这样
我也认为数学真的是很美的
--replica watches
8. re: 汇编语言--使用BIOS进行键盘输入和磁盘读写
评论内容较长,点击标题查看
--abcgril
9. re: 10个小故事(转自罗云彬的编程乐园)
好故事啊,学习啦!
--pa
10. re: 数学的魅力:取余运算还可以这样
我也是数学迷..
--designer handbags
11. re: [转]Windows下22个实用的代码编辑器
gVim 挺好用的
--coreBugZJ
12. re: Win32汇编--使用资源--菜单和加速键
初学的汇编(用NASM),仰慕!!
--coreBugZJ
13. re: 我的天哪!感冒-->鼻炎-->咽喉炎
评论内容较长,点击标题查看
--可靠上
14. re: 初识exe程序反汇编小感[转][未登录]
好文章,挺详细的
--KK
15. re: C++标准程序库—自修教程与参考手册
评论内容较长,点击标题查看
--yh
16. re: 《C++入门经典》(第3版)
评论内容较长,点击标题查看
--路青飞
17. re: [转]Windows下22个实用的代码编辑器
评论内容较长,点击标题查看
--路青飞
18. re: 我的天哪!感冒-->鼻炎-->咽喉炎
评论内容较长,点击标题查看
--路青飞
19. re: 《汇编语言》--读后感
评论内容较长,点击标题查看
--路青飞
20. re: [转]Windows下22个实用的代码编辑器
一直用emacs
--Sephiroth Lee
阅读排行榜
1. 汇编语言--call和ret指令 (24399)
2. 汇编语言--int指令(15442)
3. Win32汇编--使用MASM(10794)
4. 一个简单的游戏服务器框架(6151)
5. 初识exe程序反汇编小感[转](5917)
6. 汇编语言--标志寄存器 (5132)
7. 汇编语言--使用BIOS进行键盘输入和磁盘读写(5030)
8. [转]Windows下22个实用的代码编辑器(4721)
9. Windows环境变量设置(4618)
10. Win32汇编--使用资源--对话框(一)(4342)
11. Win32汇编--图形操作--GDI原理(4097)
12. Win32汇编--使用资源--对话框--在对话框中使用子窗口控件(2)(4084)
13. 使用lib.exe生成.lib文件(4049)
14. 汇编语言--寄存器(内存访问)(3985)
15. Win32汇编--使用资源--菜单和加速键(3517)
16. 10个小故事(转自罗云彬的编程乐园)(3114)
17. Win32汇编--分析窗口程序(2923)
18. C++实现插入排序(升序+降序)(2923)
19. Win32汇编--使用资源--版本信息资源(2757)
20. 汇编中常见的一些错误信息(2732)
评论排行榜
1. 汇编语言--端口(4)
2. 《汇编语言》--读后感(4)
3. 我的天哪!感冒-->鼻炎-->咽喉炎(3)
4. [转] 工作到底是为了什么?(2)
5. 虚函数、多态性 练习题一(2)
6. [转]Windows下22个实用的代码编辑器(2)
7. Win32汇编--图形操作--GDI原理(2)
8. 数学的魅力:取余运算还可以这样(2)
9. C++标准程序库—自修教程与参考手册 (1)
10. Win32汇编--需要了解的基础知识(1)
11. [转]各种字符编码方式详解及由来(ANSI,GB2312,GBK,UNICODE,UTF-8)(1)
12. 10个小故事(转自罗云彬的编程乐园)(1)
13. 类继承练习题一(1)
14. 《C++入门经典》(第3版)(1)
15. 汇编语言--使用BIOS进行键盘输入和磁盘读写(1)
16. 初识exe程序反汇编小感[转](1)
17. Win32汇编--使用资源--菜单和加速键(1)
18. Win32汇编--使用资源--图标和光标(0)
19. Win32汇编--使用资源--位图(0)
20. Win32汇编--使用资源--对话框(一)(0)