| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6499 人关注过本帖
标题:C语言中 多个源文件之间函数如何调用问题
只看楼主 加入收藏
we6540
Rank: 2
等 级:论坛游民
帖 子:37
专家分:11
注 册:2011-4-18
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:3 
C语言中 多个源文件之间函数如何调用问题
C语言中 多个源文件之间函数如何调用问题
主调函数文件321.c
程序代码:
#include<stdio.h>
#include<malloc.h>
struct add *wwe();
struct add
{
int xuehao;
};
main()
{
struct add *p1;
wwe();
}
被调函数文件332.c
程序代码:
#include <stdio.h>
#include<malloc.h>
struct add *wwe()

 {

 extern struct add *p1;
p1=(extern struct add *)malloc(sizeof(extern struct add));
  }

为什么会出现这样的错误呢?
332.c
C:\Program Files\Microsoft Visual Studio\MyProjects\123\332.c(6) : error C2027: use of undefined type 'add'
        C:\Program Files\Microsoft Visual Studio\MyProjects\123\332.c(3) : see declaration of 'add'
执行 cl.exe 时出错.

麻烦大家帮我改一下呢
搜索更多相关主题的帖子: 如何 wwe include 源文件 C语言 
2011-10-19 21:30
we6540
Rank: 2
等 级:论坛游民
帖 子:37
专家分:11
注 册:2011-4-18
收藏
得分:0 
这是省略的!如果代码不够清楚我可以把整段复制过来,应为太长了
2011-10-19 21:32
wukaibit
Rank: 1
等 级:新手上路
帖 子:4
专家分:7
注 册:2009-11-15
收藏
得分:7 
不知道你想表达什么意思。
332.c中
struct add *p1这个p1结构指针是main中得局部变量,即使在外边声明为 extern 也不可见啊,如果你只是想定义一个结构指针,在括号里直接定义就行了,又要加什么extern。搞不懂。
要使用struct add,就把它放到头文件中去啊,这个extern struct add。。哎 我真是没搞懂啊,我也不是什么专家,可这个表达方式我从未见过。
2011-10-19 22:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
你写结构add的定义,仅在321.c中,这个定义就只在这个模块文件321.c中有效,模块332.c是不认识的。在321.c中struct add那一块,只是声明,没有定义变量,因此你无法通过extern获得这个声明——你应该把这个声明体写在一个头文件中在两个模块中同时包含它。extern,只能用于外部确实已存在的变量实体,你在321.c中并没有定义任何全局变量可供别的模块extern引用。

而且,你332.c整个代码的写法,是错的。

[ 本帖最后由 TonyDeng 于 2011-10-19 23:26 编辑 ]

授人以渔,不授人以鱼。
2011-10-19 23:23
快速回复:C语言中 多个源文件之间函数如何调用问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024602 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved