宏是否会被定义多份?

caddor2011 2014-05-21 03:53:45
stdafx.h中定义了一个宏,
其他cpp包含了stdfax.h

请问会不会被定义多份?

为什么不会?

宏又不是全局函数 ?

问题2:

stringstream 重复使用的时候, 正确清除缓冲区的方法是什么?

有的人说是str(""),有的说是.clear()

众说纷纭, 到底正确方法是什么?
...全文
100 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-05-22
  • 打赏
  • 举报
回复
编译选项加/EP /P,重新编译,查看宏展开后对应的.i文件。gcc加-E
enic 2014-05-22
  • 打赏
  • 举报
回复
#pragma once 或者头文件保护宏 或者 #pragma message("XXX")
linux_hsylar 2014-05-21
  • 打赏
  • 举报
回复
问题一我可以解答: 1.宏是在预编译阶段将宏代表的东西展开,其实和内联函数有点相似,内联函数也是把函数内部的代码复制到最终的.cpp中; 2.宏定义你在一个头文件中如果定义了,还需要在其他的xxx.cpp或者其他的xxx.h中再次定义麽? 3.如果你在一个头文件中定义了一个宏,一般不会在其他的头文件中在次定义了,就算被重复定义,也可能是因为头文件的重复包含所导致,这样的话,避免头文件重复包含可以使用下面的预编译指令处理: #ifndef __A_H__ #define __A_H__ #include<xxxx.h> //这里是可能被重复包含的头文件; #endif //但是一般实际写头文件的时候,每个头文件都是使用上面的预编译处理;
超级能量泡泡 2014-05-21
  • 打赏
  • 举报
回复
是编译单元!
「已注销」 2014-05-21
  • 打赏
  • 举报
回复
宏的作用域为文件,

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧