-2

有没有办法编译使用跨模块依赖的应用程序?当我尝试使用标准函数和其他模块函数编译模块时

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

我收到类似的错误

implicit declaration of function printf

我知道可以通过在每个文件中包含所有标题并使用#define & #ifndef 来处理它,但它非常难看。我想在 app 文件中包含所有文件,如下所示: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 省略)

宏.h

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

模块.c

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

模块2.c

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

1 回答 1

0

包括stdio.h在你的macro.h. 这样,任何试图标macro.h头的模块都将使用printf来自的声明stdio.h

于 2013-03-13T15:39:18.330 回答