我正试图拆分一个大的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时,它应该打印“试图调用print”,然后当它调用just_print()时,它应该打印“试图打印”。在我尝试将实际功能移出main.c文件之前,这只是一项健全性检查。我究竟做错了什么?我是否误解了如何分割c文件?现在,我得到的只是函数调用之前的第一个printf语句。
答案 0 :(得分:2)
在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>
建议:在头文件中,包含保护通常写为:
JUST_PRINT_H
即不带下划线和文件全名,以大写字母表示。