我在名为variables.h的头文件中定义了一些外部变量,如下所示:
#ifndef VARIABLES_H
#define VARIABLES_H
extern int var1;
extern int var2;
#endif
然后将其添加到源文件中。
编译器警告我:
error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘var1’
对每个变量都继续,并在最后一个变量结束。
怎么了?
错误出现在每个变量的variables.h处。
文件.h:
#ifndef FILE_H
#define FILE_H
void do_sth(void);
void do_sth_else(void);
#endif
文件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’
最佳答案
您发布的头的一个明显问题是,它们声明的变量类型可能不在范围内例如,您声明
extern GtkLabel *status_label;
但是没有
#include <gtk/gtk.h>
在你文件的顶部当您从
variables.h
中包含main.c
时,您应该没事,因为<gtk/gtk.h>
先于variables.h
包含在所有其他文件中,您都会遇到问题,因为GtkLabel
是未知类型。要更正此问题,请在
<gtk/gtk.h>
文件的顶部包含variables.h
然后创建一个简单的项目,其中只有variables.h
和一个包含main.c
的简单variables.h
:主c
#include "variables.h"
int main() {
return 0;
}
继续添加丢失的头,直到这个简单的
main.c
编译完成然后将variables.h
添加到实际项目中,问题应该会消失。关于c - 全局变量编译器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11195487/