C预处理程序指令错误

时间:2014-06-20 03:44:03

标签: c c-preprocessor

我想要使用他的脚本时遇到问题:

lib1.h
...
#ifdef LIB1_01
int lib1func(void);
#endif
...

lib1.c
...
#ifdef LIB1_01
int lib1func(void){
   ...
}
#endif
...

main.c

#define LIB1_01
#include <lib1.h>
int main(){
   ...
   int x = lib1func(void);
   ...
...

我想在声明#define LIB1_01时使用lib1func(),但是当我使用它时,我有一个'警告:隐式声明函数'错误...为什么?你能帮助我吗 ? 最好的问候。

2 个答案:

答案 0 :(得分:1)

推荐替代方案:

lib1.h

#ifndef LIB1_H
#define LIB1_H
int lib1func(void);
#endif
...

lib1.c

#include "lib1.h"
int lib1func(void){
   ...
}

的main.c

#include "lib1.h"
int main(){
   ...
   int x = lib1func(void);
   ...
...

注:

1)你应该声明&#34; int lib1func(void)&#34;在标题中,但您可以在任何地方定义它。在lib1.c中(如果您愿意),甚至是main.c.只需确保您只定义一次。

2)注意在整个标题正文周围使用guard

3)另请注意include "myheader.h"(对于您自己的头文件)与#include <systemheader.h>的使用。 &#34; <>&#34;语法只应用于系统头。

答案 1 :(得分:0)

要使用这种包含,请使用选项I进行编译。

gcc myfile.c -o myfile -I .

.符号表示查看当前目录。