【发布时间】:2012-01-04 13:17:07
【问题描述】:
嗯,我有一个如下所示的标题 (my_prog.h):
#ifndef __MY_HEADER_H
#define __MY_HEADER_H
#include <stddef.h>
typedef struct {
size_t something;
size_t something_else;
}
void my_func();
#endif
和我放置的实现文件(my_prog.c):
#include "my_prog.h"
static size_t min(size_t a, size_t b) {...}
void my_func() {...}
当我尝试将 my_prog.c 编译为目标文件(我需要它来链接其他文件)时,我觉得:
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘min’
我用来编译的命令是:
gcc -c my_prog.c -o my_prog.h
没有错误说它找不到源。当我包含在实现文件中时,它会编译没有问题。
【问题讨论】:
-
请发布复制问题的最小可编译代码。
-
我试图重现您的问题。我没有收到该错误消息。我得到的是
my_prog.h:8:1: error: expected ‘;’, identifier or ‘(’ before ‘void’。 (另外,我建议在使用gcc编译时使用-Wall和-Wextra。) -
请投票结束这个问题。正如@k_wisniewski 下面的评论所述,这是一个错误,因为使用了
ifdef而不是ifndef。 -
你在结构定义之后缺少了一个
;。
标签: c gcc compilation include