如何在主 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
即没有结尾的下划线和文件的全名,大写字符。
我正在尝试拆分一个大的 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
即没有结尾的下划线和文件的全名,大写字符。