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

标签 c++ c function header using

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

令我困惑的是为什么我不必担心用 C 编程?当我用 C 编程时,为了使用来自不同文件的函数,我可以直接调用函数。

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

最佳答案

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

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

file1.c编译 时,这个隐式声明 将用于创建目标文件,然后在链接时 您只能希望该函数确实存在并且声明是正确的,这样目标文件才能成功链接在一起。

如果不是,链接器 将在某处给您一个错误:

undefined reference to `func_from_f2'


您也不一定需要头文件,您可以简单地在源文件中包含函数的声明/原型(prototype)(#include 指令基本上为您完成了此操作). IE。以下将在没有警告的情况下正常工作:

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");
}

关于c++ - C:使用同一项目中文件中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10891261/

相关文章:

c++ - 编译 CRF++ v0.51 时出错

c++ - 将列表插入 vector 的末尾

c - 几个基本的C问题

c - 如何在c中使用scanf输入一个字符串,包括空格

function - 如何将 Dyalog APL 函数保存在文本文件中?

C++ 矩阵到动态二维数组

c++ - C++中最大的数据类型是什么

c - "Freezing"控制台中的输入行并打印在上面的行上?

function - 函数如何在运行时修改然后传播到多个线程?

sql - Postgresql 复制树表内的数据