社区
C语言
帖子详情
一个c语法问题??
qsyang
2002-04-23 04:44:22
求救:
用bc3.1生成一个项目,主程序_main.cpp中调用两个头文件1.h, 2.h,现在在1.h中声明了一个结构,并定义了一个变量,那么在2.h中如果想使用1.h的结构变量,该怎样声明呢?我用extern声明不行。怎么办?
...全文
37
21
打赏
收藏
一个c语法问题??
求救: 用bc3.1生成一个项目,主程序_main.cpp中调用两个头文件1.h, 2.h,现在在1.h中声明了一个结构,并定义了一个变量,那么在2.h中如果想使用1.h的结构变量,该怎样声明呢?我用extern声明不行。怎么办?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qsyang
2002-04-24
打赏
举报
回复
问题解决,结贴
tmdee
2002-04-23
打赏
举报
回复
用预编译:
#ifndef 1_h
#include "1.h"
.
.
.
#endif
晨星
2002-04-23
打赏
举报
回复
“楼上的:
我们的项目由好几个人来写,所以很难做到你那样!”
你们做的是个项目?我还以为这是老师出的考试题故意来考你们预编译的知识呢!
结构定义当然可以在.h文件中,但既然不是考试题,为什么要把不只一个文件使用的变量定义在.h文件中呢?挪到.cpp文件中吧,一切将迎刃而解。
qsyang
2002-04-23
打赏
举报
回复
to zhukejun(Harvey) :
请从纯语言的角度来解决问题!
qsyang
2002-04-23
打赏
举报
回复
to zhukejun(Harvey) :
请从纯语言的角度来解决问题!
qsyang
2002-04-23
打赏
举报
回复
to ashchan(纯虚人生) :
我按你所说的试了下,问题依旧。我在1.h中还用AA声明了一些变量,还有一些结构中嵌套使用AA。但是在2.h中只用了一个AA的变量。这个变量在1.h中的很多函数中都用到。
编译总是提示重复定义!
附:如果不用结构,只用一般类型,那么一切ok
zhukejun
2002-04-23
打赏
举报
回复
你们的项目管理肯定有问题!
qsyang
2002-04-23
打赏
举报
回复
楼上的:
我们的项目由好几个人来写,所以很难做到你那样!
ashchan
2002-04-23
打赏
举报
回复
下面的应该行。
// :a1.h
#ifndef A1_H
#define A1_H
typedef struct A {
int a;
char b;
} AA;
AA test1;
int test2;
#endif
***************************************
// :a2.h
#ifndef A2_H
#define A2_H
#include "a1.h"
extern AA test1; //这次OK了吗
extern int test2; //正确
#endif
*********************************
/* :test.cpp
*
* James Chan 2002/04/23
* ashchan_xp@hotmailcom
* www.ashchan.com
*/
#include <iostream>
#include "a1.h"
#include "a2.h"
int main()
{
return 0;
}
sum_1
2002-04-23
打赏
举报
回复
我到有一个建议把你所有过程所用到的结构,变量等的声明写在一个包含文件中.包含此文件的语句放在代码的最前端,这样下面代码就可以共享了.
知道你的代码非常复杂,好好整理一下.
qsyang
2002-04-23
打赏
举报
回复
to snipersu() :
假设我的1.h如下:
-------------------------
typedef struct A
{
int a;
char b;
}AA;
AA test1;
int test2;
typedef struct B
{
AA t1;
int b;
}BB;
//还有很多结构中用到了AA
---------------------------------
现在我想在2.h中调用用AA定义的test1,用你所说的预编译怎么实现呢?好像不是那么简单吧???
qsyang
2002-04-23
打赏
举报
回复
to HKer_007(刚强) :
如果再定义一个3.h文件,那么结构声明肯定要放在那里,现在我在1.h中除了用了那个结构定义了一个变量以外,在其他结构中还嵌套了此结构,所以你的方法不可行!
HKer_007
2002-04-23
打赏
举报
回复
干脆再定义一个3.h文件,将这个变量放进去,当成全局变量;
加上: #include"3.h"
snipersu
2002-04-23
打赏
举报
回复
在1.h中定义一个变量也好符号也好如#define _1H
在2.h中用ifndef _1H ....else...#endif 来避免重复定义。
qsyang
2002-04-23
打赏
举报
回复
TO shipatrioc(风吹雨打哗啦啦)
我现在的程序比较复杂,在1.h 和2.h中有些互相需要引用的变量,所以还不能向你那样做。
gawain
2002-04-23
打赏
举报
回复
在file2.h中要再次声明一AA的结构
比较好的办法是在.c文件中声明那两个变量
然后在.h文件中有extern来引用
shipatrioc
2002-04-23
打赏
举报
回复
2.h中调用1.h
然后extern该变量,
main函数里只include的2.h就行了
qsyang
2002-04-23
打赏
举报
回复
楼上的:
我已经在主文件中#include 1.h 和 #include 2.h了,但是不行。部分代码如下:
file 1.h:
------------------------
typedef struct A
{
int a;
char b;
}AA;
AA test1;
int test2;
------------------------
file 2.h
-------------------------
extern AA test1; //错误
extern int test2; //正确
怎么回事??
sum_1
2002-04-23
打赏
举报
回复
在主文件中
先#include "1.h"
然后再#include "2.h"就行了嘛.
如果有重复定义那就看看2.h中是否间接调用了,有可能你没发现.
extern中是怎样声明的结构的请列出代码.
qsyang
2002-04-23
打赏
举报
回复
楼上的:
用#include后会出现变量重复定义的错误。
我用extern声明1.h中的变量都可以,就是结构不可以。怎么回事?
加载更多回复(1)
C语言
语法
着色中文版函数大全.pdf
是不是看到各种IDE的函数
语法
着色很清晰有层次?这本文档让我们在查询C语言函数的时候也能享受到这种感觉。
C语言大全第4版+源码(PDF)
尽管C99并没有被大肆炒作,但它确实是过去5年里计算领域中最重要的
一个
事件。在历史的洪流中,人们很容易只注意那些新的事物,而忽视了用以构筑未来的坚实基础。C语言正是这样的基础。世界上的许多程序代码是在C上...
《C语言/C++学习指南》
语法
篇(从入门到精通)
一门初级、从入门到精通的C语言C++
语法
教程,由毕业于清华大学的业内人士执课。从简单的HelloWorld入门程序,到深入的C语言C++核心概念,均为您娓娓道来,言之必详、听之必懂。让C语言C++编程变得简单,让C语言C++...
C语言参考手册第五版【中文版】
1、 c语言具有
语法
简洁的特点,相信用过其他语言的人都知道 2、 运算符丰富,让我有时侯都分不清 3、 数据结构类型丰富 4、 结构化,就是想一小块一小块的程序,这样写起来容易 5、 强语言类型,
语法
错误时...
SolerHo#CprimerPlus-6e-Notes#复习题2
第二章 C语言概述 复习题1.C语言的基本模块是什么?基本模块和用户自定义模块的都称为函数。2.什么是
语法
错误和语义错误?-
语法
错误:违反组成语句或程序的
语法
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章