我曾在一個名爲variables.h像這樣一個頭文件中定義的一些變量的extern:全局變量編譯器錯誤
#ifndef VARIABLES_H
#define VARIABLES_H
extern int var1;
extern int var2;
#endif
然後我把它添加到我的源文件。
編譯器警告我說以下內容:
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘var1’
這正好爲每個變量,並在最後一個變量結束。
什麼問題?
這個錯誤出現在variables.h中的每個變量上。
file.h:
#ifndef FILE_H
#define FILE_H
void do_sth(void);
void do_sth_else(void);
#endif
file.c:
#include "variables.h"
/* Quit */
void do_sth(void) {
/* do sth */
}
void do_sth_else(void) {
/* do sth else */
}
多數民衆贊成。 錯誤是:
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘var1’
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘var2’
你可以在'.c'文件中加入這個文件並編譯嗎? –
您帖子的標題很好。最可能的原因是在其他標題中。我的第一個猜測是你在這個之前包含另一個.h文件,而在另一個.h文件中,你聲明瞭一個沒有結尾分號或大括號的'struct'。 – dasblinkenlight
如果我刪除包含完整函數的.c文件,並用它編譯好的完整函數替換頭文件中的函數原型。 – Rrjrjtlokrthjji