C - 为什么我编译它时不识别源文件(.c)?

时间:2013-11-25 13:15:32

标签: c include

我有一个任务要做,它是实现一些接口,但当我包含头文件时,它为我写的它不能识别方法

我的意思是我有一个班级

A.h
{
    some code....
}
A.c
{
   #include "A.h" 
   implemented methods...
}

如果我有一个B级,如果我包含 .h 文件我想使用A类它不起作用 像这样:

B.c
{
   #include "A.h"
}

但如果我包含 A.c ,它确实会识别这些方法,那么有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

你的描述相当......很奇怪,但我认为你有一个链接问题。

如果您在“A.c”中有代码,则会将其编译为保存结果代码的目标文件(通常为“A.o”或“A.obj”)。

但仅仅因为你在另一个C文件(“Bc”)中说#include "A.h"会神奇地导致“Ao”目标文件被链接。

编译类似:

$ cc -o myprogram B.c A.c

使编译器将两个C文件合并为一个可执行文件,或者

$ cc -o myprogram B.c a.o

链接到预先存在的目标文件。

此外,C中没有“方法”,你的大括号非常奇怪。