我正在移植一些我拥有的C ++代码。它在C ++中完美运行,所以我不知道我做错了什么。
我有“a.c
”和“b.c
”。它们都包含“a.h
”,而“b.h
”又包含“b.c
”。 “extern
”中的函数在其头文件中声明(使用a.c
关键字),其中一个函数从“printf()
”调用。它编译并运行,但呼叫似乎永远不会通过(我甚至将几条 #include "a.h"
...
int sSimDisp(void){
buttons();
printf("x = %04d\n", index);
...
}
int main(){
...
while(1) {
sSimDisp();
...
}
return 0;
}
行用于诊断,但没有任何反应。
我知道我忽略了一些简单的东西,我只是不能把手指放在什么东西上。任何帮助表示赞赏。
编辑:粘贴一些简化的代码: 编辑2:电话通过,有一个库问题需要解决。现在索引变量没有递增,我认为它可能是一个范围问题。
在“a.c”中
#ifndef a_H_
#define a_H_
...
#include "b.h"
#include "c.h"
int sSimDisp(void);
int main(void);
#endif /* a_H_ */
在“a.h”中
#include "a.h"
...
int index = 0;
void buttons(){
printf("Entry to button subroutine.\n");
index++;
...
}
void touchscreen(){
...
}
in“b.c”
#ifndef b_H_
#define b_H_
...
extern int index;
//button handler
void buttons();
//touch screen handler
void touchscreen();
#endif /* b_H_ */
在“b.h”中
{{1}}
答案 0 :(得分:0)
你在a.h中声明int main(void)很可能导致未定义的行为。
程序中只能有一个主程序,并且您不会在标题中放置原型。
答案 1 :(得分:0)
我的代码没有错,库真的很高兴。我要抓住这些家伙,我们将对回购的最后更改进行排序。感谢您的帮助,我只是想确保这不是我做错了。