C语言中 多个源文件之间函数如何调用问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中 多个源文件之间函数如何调用问题相关的知识,希望对你有一定的参考价值。
C语言中 多个源文件之间函数如何调用问题
主函数3.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 时出错.
#include<stdio.h>
#include<malloc.h>
struct add *wwe();
struct add
int xuehao;
;
main()
struct add *p1;
p1=wwe();
//被调函数332.c
#include <stdio.h>
#include<malloc.h>
struct add *wwe() //此处你是定义一个名为wwe的函数,没有参数,返回值类型是:struct add*
struct add *p1;
p1=(struct add *)malloc(sizeof(struct add)); /*此处“extern”可以不要吧,一般他是用来声明用的,*/
return p1; //此处要返回一个值,没有值是不可以的
参考技术A 332.c 里面必须include 3.c文件。因为3.c里没有 struct add 结构体的定义,sizeof(extern struct add),里不用extern的。 3.c里面也要include 33.2文件。因为struct add *wwe();在332.c文件里面。
你可以用头文件的方式来声明。就不用include 点C文件了追问
为什么还会出现这样的东西呢
332.obj : error LNK2005: _main already defined in 321.obj
Debug/3.exe : fatal error LNK1169: one or more multiply defined symbols found
执行 link.exe 时出错.
你可不可以帮我把它改一下呢
新一个文件叫"common.h",里央写入下面内容
#ifndef __COMMON_H__
#define __COMMON_H__
struct add *wwe();
struct add
int xuehao;
;
#endif
把3.c里面的删掉,然后加入#include "common.h"
332.c也加入#include "common.h"
extern 是对变量的。删掉。
就应该没问题了,一个使用规则就是,在使用之间要先声明。
以上是关于C语言中 多个源文件之间函数如何调用问题的主要内容,如果未能解决你的问题,请参考以下文章