标题:<求助> 新手,求教
只看楼主
shi944263714
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-3-2
结帖率:100%
已结贴  问题点数:10 回复次数:10 
<求助> 新手,求教
老师布置的问题,有些看不懂。

首先我需要做个程序,但是有文件的要求。

我需要建立一个 main.c 一个 fun.c 一个 fun.h。
然后 在fun.c里写具体的函数,直接在main.c里直接include<fun.h>后直接用fun函数
但是结果是这样的。。不知是什么问题如何解决,

||=== Build: Debug in fun (compiler: GNU GCC Compiler) ===|
obj\Debug\main.o||In function `main':|
G:\C\project\fun\main.c|6|undefined reference to `fun'|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 4 second(s)) ===|

因为是第一次弄多文件 以前都是在同一个文件里写的程序。。。望指教~
搜索更多相关主题的帖子: undefined reference function include warning 
2016-03-02 16:19
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
得分:2 
http://blog.

[此贴子已经被作者于2016-3-2 17:03编辑过]


   唯实惟新 至诚致志
2016-03-02 16:39
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:2 
你在fun.h里加一个extern int fun();
另外应该是#include "fun.h"
2016-03-02 16:53
shi944263714
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-3-2
得分:0 
回复 2楼 qq1023569223
按照上面的做了并没有用。。。
2016-03-02 22:02
shi944263714
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-3-2
得分:0 
回复 3楼 grmmylbs
仍然不行。。。
2016-03-02 22:02
shi944263714
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-3-2
得分:0 
另外就是刚刚发现的: 我用的是CodeBlocks 编译不成功  但是同样的在VC++6.0中就可以通过。。
2016-03-02 22:04
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:1 
不可能啊,代码能发给我看看么。
2016-03-03 09:22
shi944263714
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-3-2
得分:0 
回复 7楼 grmmylbs
好的 为了实验成功 我就改的简单点了

//main.c
#include <stdio.h>
#include "fun.h"
int main()
{
     fun(3,4);
     return 0;
}

//fun.c
#include<stdio.h>
#include "fun.h"
extern void fun(double r,int n)
{
    printf("r=%f,n=%d\n",r,n);
}

//fun.h
#ifndef FUN_H_INCLUDED
#define FUN_H_INCLUDED

extern void fun(double r,int n);

#endif // FUN_H_INCLUDED

[此贴子已经被作者于2016-3-3 17:00编辑过]

2016-03-03 09:48
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
得分:5 
程序代码:
//头文件只放函数声明,源文件放函数定义(一般包含同名头文件),测试文件(main.c)就负责测试就好

//main.c
#include <stdio.h>
#include "fun.h"
int main()
{
     fun(3,4);
     return 0;
}

//fun.c
#include<stdio.h>
#include "fun.h"
void fun(double r,int n)
{
    printf("r=%f,n=%d\n",r,n);
}

//fun.h
#ifndef SIMULATE_H_INCLUDED
#define SIMULATE_H_INCLUDED

void fun(double r,int n);//这里,还有你那什么extern是干嘛的原来?

#endif // SIMULATE_H_INCLUDED


[此贴子已经被作者于2016-3-3 10:01编辑过]

2016-03-03 09:54
shi944263714
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-3-2
得分:0 
回复 9楼 wengbin
extern是之前搜索解决问题方法时有人说的 我也就试试加上去了

按照你的写法,仍然通过不了 。。  

||=== Build: Debug in SimulateParticleRunning (compiler: GNU GCC Compiler) ===|
obj\Debug\main.o||In function `main':|
G:\C\project\SimulateParticleRunning\main.c|5|undefined reference to `fun'|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|


不知道是不是因为我用的codeblocks的原因  如果用VC确实是可以通过成功运行的
2016-03-03 12:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-462084-1-1.html




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

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