社区
C++ 语言
帖子详情
关于条件编译的问题
jzd1997
2004-09-16 02:35:42
我在common.h中定义了几个全局的对象,在sql.h和check.h当中都需要引用这个文件,为了防止重复定义,用如下的方式定义。
#ifndef CHK_COMMON
#define CHK_COMMON
OSession sess;
ODatabase datab;
oresult ores;
#endif
但是还是编译出错,说sess等已经定义了。请各位帮忙阿!
...全文
198
10
打赏
收藏
关于条件编译的问题
我在common.h中定义了几个全局的对象,在sql.h和check.h当中都需要引用这个文件,为了防止重复定义,用如下的方式定义。 #ifndef CHK_COMMON #define CHK_COMMON OSession sess; ODatabase datab; oresult ores; #endif 但是还是编译出错,说sess等已经定义了。请各位帮忙阿!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jzd1997
2004-09-20
打赏
举报
回复
谢谢各位老大指点.
248406869
2004-09-16
打赏
举报
回复
编译器会把每一个cpp文件作为一个翻译单元,#define CHK_COMMON只是在本翻译单元内有效,在别的翻译单元中还是没有定义这个宏。
neverfor
2004-09-16
打赏
举报
回复
你对条件编译的理解有问题;
你的common.h只是防止嵌套包含,比如头文件my.h中有#include "common.h"。而在别的文件中要用到common.h和my.h,你可能会这样写:#include "my.h";#include "common.h" 这个时候你的条件编译就起了作用。他不common.h中的内容两次放进去。
但是对于全局变量,
比如你有两个cpp文件,都用到了common.h
则common.h中定义的变量在两个cpp中都存在了,就重复定义了。
一般而言,在头文件中定义全局变量并不是一种好的编程习惯。正确的做法应该是在cpp中定义,然后在一个头文件中申明
jzd1997
2004-09-16
打赏
举报
回复
大家说的extern是可以,在其他地方定义这些全局变量,已经编译通过了。
但是为什么我的条件编译没起作用呢?如果定要在common.h当中定义,怎么办?
pacman2000
2004-09-16
打赏
举报
回复
把定义放到.c或者.cpp的文件中去。
miria
2004-09-16
打赏
举报
回复
你已经违背了C++中的一次定义,多次声明原则!
C中int x;是声明必须放在可执行语句之前,
C++中,int x:是定义可以放在任何地方
kobefly
2004-09-16
打赏
举报
回复
没看出来啊
柯本
2004-09-16
打赏
举报
回复
//在common.h中
#ifndef CHK_COMMON
#define CHK_COMMON
extern OSession sess;
extern ODatabase datab;
extern oresult ores;
#endif
然后在主文件里定义:
OSession sess;
ODatabase datab;
oresult ores;
freefalcon
2004-09-16
打赏
举报
回复
头文件中只声名,在某个源文件中定义
#ifndef CHK_COMMON
#define CHK_COMMON
extern OSession sess;
extern ODatabase datab;
extern oresult ores;
#endif
在某个源文件中定义
OSession sess;
ODatabase datab;
oresult ores;
darkstar21cn
2004-09-16
打赏
举报
回复
extern
C++
条件编译
|
条件编译
C++
条件编译
在C++中,在进行编译时对源程序中的每一行都要编译,但是有时希望程序中某一部分内容只在满 足一定条件时才进行编译,也就是指定对程序中的 一部分内容进行编译的条件,如果不满足这个条 件,就不编译这...
uniapp的
条件编译
uniapp的
条件编译
关于uniapp的
条件编译
使用
条件编译
快捷键官方地址 关于uniapp的
条件编译
使用 各个平台打包后根据平台不同可以执行不同的代码使用uniapp提供的
条件编译
代码。 其中平台名称可以取一下值 使用方法,...
uni-app - 解决 pages.json 中写
条件编译
报错导致白屏的
问题
(在 pages.json 里写
条件编译
语法后小程序端控制台直接报错白屏了)编译时 pages.json 解析失败解决教程
uni-app page.json
条件编译
报错,uni-app之
条件编译
在pages.json里的写法,uniapp编译时pages.json 解析失败,uniapp在pages配置文件中写
条件编译
注释后在微信小程序端报错了编译过不了白屏,UNIAPP如何能让跨段...
深入理解C语言:掌握
条件编译
的奥秘
本文旨在深入探讨C语言中的
条件编译
,这是一种强大而灵活的预处理指令,允许程序员根据特定
条件编译
代码的不同部分。我们将分析
条件编译
的基本原理,并通过实际代码示例来展示其应用。文章适合那些希望提高代码可...
2021-08-09 uni-app基础教程
条件编译
一、
条件编译
条件编译
条件编译
是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台。 写法:以 #ifdef 或 #ifndef 加 %PLATFORM% 开头,以 #endif 结尾。 #ifdef:if defined ...
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章