0

我的问题之一是关于如何避免出现重复错误,因为我对 C 很陌生。基本上,当我在 Netbeans 中构建项目时,如果我在项目中有文件并且还包含它,我会收到该错误。

定义静态函数,是避免它的正确方法吗?还有哪些其他解决方案?谢谢

4

2 回答 2

2

.c/.cpp文件不应包含在内。

将声明移动到一个公共头文件并包含它。

于 2012-05-11T21:03:38.583 回答
1

正如 K. Horvath 所说,您不应该将一个 c 文件包含在另一个文件中。这意味着您必须为每个 .c 提供一个 .h,将 .c 文件编译为目标文件,然后根据需要包含 .h 文件并将所有对象与包含 .c 的 .c 一起编译main()。但是,您仍然可以在 .h 声明中出现重复,这就是包含守卫的用武之地。

#ifndef MY_HEADER
#define MY_HEADER

// all your type definitions, function prototypes, etc

#endif

WRT 首先编译每个 .c,这是gcc的一个示例:您有一个 util.c 文件,其中包含要在 main.c 中使用的各种功能;然后 util.c 应该#include在 main.c 中有一个对应的 util.h。然后:

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 ;)

于 2012-05-11T21:18:52.987 回答