有没有一种方法可以使用跨模块依赖项来编译应用程序?
当我尝试使用标准功能和其他模块功能编译模块时

gcc module.c -c
gcc module2.c -c
gcc module.o module2.o -o app


我收到类似的错误

implicit declaration of function printf


我知道可以通过在每个文件中包含所有标头并使用#define和#ifndef来处理它,但这非常丑陋。我想将所有文件包含在应用程序文件中,如下所示:
app.c

#include "macro.h"
#include "module.h"
#include "module2.h"

#include <math.h>
#include <stdio.h>
#include <stdlib.h>

int main(void) {}


(省略了module.h和module2.h)



#define macro(var1, var2) var1 ? printf(var2) : moduleFunc(var2)
#define macro2(var) some math func


模组

void moduleFunc(char* var) {macro2(); module2Func();}


module2.c

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

最佳答案

在您的stdio.h中包括macro.h。这样,任何尝试使用macro.h标头的模块都将使用printf中的stdio.h声明

关于c - GCC模块依赖性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15388171/

10-08 23:00