Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GCC模块依赖项_C_Gcc_Module_Include_C Preprocessor - Fatal编程技术网

GCC模块依赖项

GCC模块依赖项,c,gcc,module,include,c-preprocessor,C,Gcc,Module,Include,C Preprocessor,有没有一种方法可以编译使用跨模块依赖关系的应用程序? 当我尝试使用标准函数和其他模块函数编译模块时 gcc module.c -c gcc module2.c -c gcc module.o module2.o -o app 我会犯这样的错误 implicit declaration of function printf 我知道可以通过在每个文件中包含所有头并使用define&ifndef来处理它,但这非常难看。我希望在应用程序文件中包含所有文件,如下所示: 附录c 模块c void mod

有没有一种方法可以编译使用跨模块依赖关系的应用程序? 当我尝试使用标准函数和其他模块函数编译模块时

gcc module.c -c
gcc module2.c -c
gcc module.o module2.o -o app
我会犯这样的错误

implicit declaration of function printf
我知道可以通过在每个文件中包含所有头并使用define&ifndef来处理它,但这非常难看。我希望在应用程序文件中包含所有文件,如下所示: 附录c

模块c

void moduleFunc(char* var) {macro2(); module2Func();}
模块2.c

void module2Func(...) {macro(); printf(...); some math func}

在宏.h中包含stdio.h。这样,任何试图宏.h头的模块都将使用stdio.h中的printf声明

为什么告诉编译器执行其任务所需的内容是丑陋的?这就像有一个员工对他说,你不知道这个工具,但你可以很好地猜测它可能是什么!在每个文件中有一些像ifndef STDIO_H这样的行定义STDIO_H include endif是丑陋的。那是丑陋的吗?文件中有几行字符?这可能被认为是丑陋的,但他的女朋友却不这么认为。顺便说一句,源代码并不漂亮。如果你想去当地的美术馆。@Lukasik如果你必须在你的文件中实现你自己的头保护,那么你正在使用的编译器就坏了。你应该能够把它包括进去,然后处理完。标题保护应该在include文件中,而不是在源文件中。
void moduleFunc(char* var) {macro2(); module2Func();}
void module2Func(...) {macro(); printf(...); some math func}