c语言\仅仅包含.h文件为什么不行的??

yanluo129 2006-08-30 01:26:20
/* c语言头文件:A.h */
#ifndef A_H
#define A_H
extern int add(int x,int y);
#endif

/* c语言实现文件:A.c */
#include "A.h"
int add( int x, int y )
{
return x + y;
}

// c实现文件,调用add:cppFile.cpp

#include "A.h"
int main(int argc, char* argv[])
{
add(2,3);
return 0;
}


编译时就会无法找到add()的函数体,如果是包含A.c就没问题的,但这不对头啊,
请问应该怎么处理以后就可以用#include "A.h"兵来调用函数呢?
...全文
708 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlwaysFree 2006-08-30
  • 打赏
  • 举报
回复
呵呵,我新来滴,你看着给吧,不要伤了我的心,.,.,..,
yanluo129 2006-08-30
  • 打赏
  • 举报
回复
差不多明白拉

看来是一些编译环境惹的,因为不清楚内部编译过程
把环境设置问题和编译问题搞混了,而想让编译时能自动寻找连结对象.

谢谢各位,该怎么结帖给分的啊 ?
AlwaysFree 2006-08-30
  • 打赏
  • 举报
回复
已经说过,纯C不要用.cpp,
#ifdef __cplusplus
extern "C" {
#endif
int add(int x,int y);
#ifdef __cplusplus
这个东西不是每个编译器都支持滴
Rainyor 2006-08-30
  • 打赏
  • 举报
回复
#ifndef A_H
#define A_H

#endif
只是指出不要重复引入头文件,没有别的作用
#ifdef __cplusplus
extern "C" {
#endif
int add(int x,int y);
#ifdef __cplusplus
}

在CPP文件中使用C编译器编译,往往是为了提高程序的运行速度
yanluo129 2006-08-30
  • 打赏
  • 举报
回复
思路应该没问题,工程没设置好的可能比较大

PS: LZ要不先用命令行编译练练手,比如VC的CL.exe

======================================================


AlwaysFree 2006-08-30
  • 打赏
  • 举报
回复
思路应该没问题,工程没设置好的可能比较大

PS: LZ要不先用命令行编译练练手,比如VC的CL.exe
Rainyor 2006-08-30
  • 打赏
  • 举报
回复 1
呵呵,大伙扯什么呢,骗小孩子呢
gcc -o test main.c add.c
必须包括stdio.h
OK
yanluo129 2006-08-30
  • 打赏
  • 举报
回复
在这说明下:
我是想写个自己的库

就是想象使用系统库那样使用 如: #inlude<stdio.h>

就把自己的库写成A.h A.c 两个文件

然后在象包含系统库文件那样用,

#inlude<stdio.h>
#inlude "A.h"
"
然后就出现上述问题,
不知道是我思路不对?还是自己的库本来就不是这么写的
goodluckyxl 2006-08-30
  • 打赏
  • 举报
回复
那需要加载你要编译成LIB或是DLL
参照vc使用方法
可能你缺少的使用经验而非程序问题
Arthur_ 2006-08-30
  • 打赏
  • 举报
回复
我建立个空的工程

把文件相应加进去后没有错误
Arthur_ 2006-08-30
  • 打赏
  • 举报
回复
vc 里也有makefile
不过。。。

如果东西多了直接建立个工程就好了,vc什么都帮你作了,没有做,就提醒你好了
yanluo129 2006-08-30
  • 打赏
  • 举报
回复
在这说明下:
我是想写个自己的库

就是想象使用系统库那样使用 如: #inlude<stdio.h>

就把程序写成A.h A.c 两个文件

然后在象包含系统库文件那样用,
然后就出现上述问题,
不知道是我思路不对?还是自己的库本来就不是这么写的
AlwaysFree 2006-08-30
  • 打赏
  • 举报
回复
VC会自动生成makefile的,实际上所有IDE都会这么做,呵呵
Arthur_ 2006-08-30
  • 打赏
  • 举报
回复
vc里也可以用makefile
但没有用过,

如果多个文件还是建立各工程好了,一目了然
AlwaysFree 2006-08-30
  • 打赏
  • 举报
回复
他说的意思是,工程需要a.c的obj文件,所以要添加到一个工程中

是这样吧
goodluckyxl 2006-08-30
  • 打赏
  • 举报
回复
按照实现我看不出问题
cxyol 2006-08-30
  • 打赏
  • 举报
回复
这样没有错的,不过把名字起的复杂一点看看
goodluckyxl 2006-08-30
  • 打赏
  • 举报
回复
先确认是不是都是.c文件?
yanluo129 2006-08-30
  • 打赏
  • 举报
回复
vc的话,你要把a.c加入到工程里面去
gcc的话,要把a.obj加入到gcc的命令行

===============================

那系统的库文件呢,没把.c文件加进去啊?

我是想写个自己的库,出现这个问题不知道该怎么处理的..
以后用的时候总不能都去找出来添加文件吧
yanluo129 2006-08-30
  • 打赏
  • 举报
回复
// c实现文件,调用add:cppFile.cpp

这里错了 复制的时候没改掉
应该是:

// c实现文件,调用add:cppFile.
加载更多回复(24)

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧