如何在主 C 文件中使用第二个 C 文件中的函数?

How to use a function from a second C file in the main C file?

我正在尝试拆分一个大的 C 文件,因为它很难阅读和跟踪正在做什么。我仔细阅读了它,它应该像创建一个包含该函数的 c 文件一样简单,然后创建一个引用该函数的头文件,然后将头文件包含在主 c 文件中并简单地使用该函数。但是,我已经这样做了,而且我的代码中实际上并没有调用有问题的函数。

我试着在函数中放置 printf 语句,这样我就可以看到它是否真的被调用了,但这些语句没有出现在监视器中(我将其解释为函数没有被调用)

//MAIN.c
#include "just_printf.h"

void app_main(){
    printf("attempting to call print\n");
    just_print();
}

//---------------------------------------
//JUST_PRINTF.h
#ifndef MAIN_JUST_PRINT_H_
#define MAIN_JUST_PRINT_H_

void just_print();

#endif

//---------------------------------------
//JUST_PRINTF.c
#include "just_printf.h"

void just_print(){
    printf("tried to prrint");
}

当我 运行 main.c 时,它应该打印 "attempting to call print" 然后当它调用 just_print() 时它应该打印 "tried to prrint"。这只是在我尝试将实际功能从我的 main.c 文件中移出之前的健全性检查。我究竟做错了什么?我误解了如何拆分 c 文件吗?现在我得到的只是函数调用之前的第一个 printf 语句。

在main.c中,更改:

void app_main() {

至:

int main(void) {

然后像这样编译:

gcc main.c just_printf.c

并且输出将是(在执行 a.out 之后):

Georgioss-MBP:~ gsamaras$ ./a.out 
attempting to call print
tried to prrint

你应该得到一个关于函数 printf 的隐式声明的警告,因为你没有包含 stdio.h - 在头文件中这样做,我建议,像这样:

#include <stdio.h>

建议:在头文件中,include guard通常这样写:

JUST_PRINT_H

即没有结尾的下划线和文件的全名,大写字符。