我的一个问题,因为我对C很陌生,就是避免出现重复错误的方法。基本上,当我在Netbeans中构建项目时,如果我在项目中有文件并且还包含它,我就会收到该错误。
定义静态函数,是一种避免它的正确方法吗?还有哪些其他解决方案?感谢
答案 0 :(得分:2)
.c
/ .cpp
文件不应包括在内。
将声明移至公共头文件并包含该文件。
答案 1 :(得分:1)
正如K. Horvath所说,你不应该在另一个中包含一个c文件。这意味着您必须为每个.c提供.h,将.c文件编译为目标文件,然后根据需要包含.h文件,并将所有对象与包含main()
的.c一起编译。你仍然可以在.h声明中得到重复,但这是包含警卫进来的地方。
#ifndef MY_HEADER
#define MY_HEADER
// all your type definitions, function prototypes, etc
#endif
WRT首先编译每个.c,这是 gcc 的一个示例:你有一个util.c文件,其中包含你想在main.c中使用的各种函数;那么util.c应该在main.c中有一个相应的util.h #include
。然后:
gcc -Wall -g -c util.c
" -Wall"启用编译器警告
" -g"包括调试器符号
" -c"将生成.o(未链接的中间对象)文件而不是普通的可执行文件。
现在:
gcc -Wall -g util.o main.c
这会编译main.c并包含util.c中编译成util.o的东西。
由于您使用netbeans,这可能是理论上的 - 通常IDE会为您做所有这些。但是,了解基本过程可能会使您更容易理解您的IDE;)