C:使用同一项目中的文件中的函数

时间:2012-06-05 03:39:14

标签: c++ c function header using

我的问题没有链接到一个直接的例子,但更多的是整个问题。当我使用C ++进行编码时,我发现(在浏览了一些线程之后)为了使用同一项目中不同文件的函数,我要么需要一个头文件。所以,例如,如果我在一个名为“main.cpp”的文件中有main函数,并且我想在另一个名为“problem1.cpp”的文件中使用一个函数“prob1()”,我需要使用一个头文件文件。

让我感到困惑的是为什么我不必担心在C语言编程?当我用C编程时,为了使用不同文件中的函数,我可以直接调用函数。

感谢任何帮助/解释。谢谢!

2 个答案:

答案 0 :(得分:3)

您的C编译器可以隐式声明该函数,但您应该自己这样做。如果你打开警告,你会看到类似的东西:

file1.c: warning: implicit declaration of function ‘func_from_f2’

file1.c 正在编译时,此隐式声明将用于创建目标文件,然后在链接时你只需要希望函数确实存在并且声明是正确的,这样就可以成功地将目标文件链接在一起。

如果没有,链接器会在某处发生错误:

undefined reference to `func_from_f2'


您也不一定需要头文件,您只需在源文件中包含该函数的声明 / prototype(#include指令基本上为您执行此操作)。即。以下将在没有警告的情况下正常工作:

<强> file1.c中

void func_from_f2(void);

int main(void)
{
   func_from_f2();

   return 0;
}

<强> file2.c中

#include <stdio.h>

void func_from_f2(void)
{
   puts("hello");
}


但是,通常最佳做法是使用头文件:

<强> file1.c中

#include "file2.h"

int main(void)
{
   func_from_f2();

   return 0;
}

<强> file2.h

#ifndef FILE2_H
#define FILE2_H

void func_from_f2(void);

#endif

<强> file2.c中

#include <stdio.h>
#include "file2.h"

void func_from_f2(void)
{
   puts("hello");
}

答案 1 :(得分:2)

在C中,如果您没有提供正确的原型,编译器将猜测正确的原型。它经常猜错了,然后你的程序就会中断。

无论是C还是C ++,在头文件中提出声明总是一个好主意,该头文件也会#include d进入实现文件,编译器可以在其中检查是否存在不匹配。