gpt4 book ai didi

c - 全局变量编译错误

转载 作者:太空宇宙 更新时间:2023-11-03 23:54:30 25 4
gpt4 key购买 nike

我在名为 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;
}

继续添加缺少的 header ,直到这个简单的 main.c编译。然后添加您的 variables.h到真正的项目,问题就会消失。

关于c - 全局变量编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11195487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com