嗯,我有一個頭(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到目標文件(我需要它與其他文件鏈接)I FET:
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘min’
我使用的編譯的命令是:
gcc -c my_prog.c -o my_prog.h
有沒有錯誤說它找不到源代碼。當我包含在實現文件中時,它將編譯沒有問題。
後最低編譯代碼,請。 –
我試圖重現你的問題。我沒有得到那個錯誤信息。我得到的是'my_prog.h:8:1:error:expected';',identifier或'('before'void''。(另外,我建議使用'-Wall'或者'-Wextra'當使用'gcc'編譯時) – ibid
請投票結束問題,正如@ k_wisniewski的下面的註釋所述,由於使用了'ifdef'而不是'ifndef',所以這是一個錯誤 – INS