c - 简单 GTK 示例中的预期声明说明符
问题描述
我正在关注GTK 介绍。
我的前 21 行是:
// https://developer.gnome.org/gtk3/stable/gtk-getting-started.html#id-1.2.3.5
#include <gtk/gtk.h>
static void
print_hello (GtkWidget *widget,
gpointer data)
{
g_print ("Hello World\n");
}
static void
activate (GtkApplication* app,
gpointer user_data)
GtkWidget *window;
GtkWidget *label;
GtkWidget *button_box;
GtkWidget *button;
window = gtk_application_window_new (app);
我正在使用 makefile 构建上述 gtk_hello02.c 文件:
# gcc gtk_hello02.c -o gtk_hello02 `pkg-config --cflags --libs gtk+-3.0`
# https://stackoverflow.com/questions/28533059/how-to-use-pkg-config-in-make
CFLAGS=-g -Wall -Wextra $(shell pkg-config --cflags gtk+-3.0)
LDFLAGS=$(shell pkg-config --libs gtk+-3.0)
CC=gcc
SOURCES=$(wildcard *.c)
EXECUTABLES=$(patsubst %.c,%,$(SOURCES))
all: $(EXECUTABLES)
clean:
rm $(EXECUTABLES)
为什么会抱怨如下?
gtk_hello02.c: In function ‘activate’:
gtk_hello02.c:21:3: error: expected declaration specifiers before ‘window’
21 | window = gtk_application_window_new (app);
| ^~~~~~
据我所知,该窗口已被声明为 GTK Widget。我记得当我尝试不使用 Makefile 时,我编译该文件时没有问题。我不明白现在发生了什么变化。
解决方案
这是没有有用的 IDE 的问题。
事实上,在这种情况下,GVIM 和 Code::Blocks 都没有给出准确的错误。
最后,经过长时间的配置,我发现 Visual Studio Code 可以非常有效地发现缺失{
,因此建议使用 IDE 来支持这种编码。请看下面的截图:
推荐阅读
- c# - 设置 DataGridTextColumn 的 TextBlock 的绑定
- build - 运行 debuild 时,如何指定 dsc、build、changes、update、tar.gz 文件的去向?
- javascript - 使用 VBA Excel 查找域中重复次数最多的 5 个单词(网络爬虫)
- r - 获取部分内的文本
- facebook-graph-api - Facebook Graph Api 发布以提供反馈:“(#100) 参数地点必须是有效的地点标签 ID”
- amazon-web-services - 禁用 Bitnami 横幅后,Apache 未运行,Httpd 无法启动
- javascript - 如何在 JavaScript 中将 ArrayBuffers 与 DataViews 一起使用
- javascript - 无法在 Iframe 沙盒允许脚本下播放 openload 视频
- perl - Perl - 无法打开和读取文件
- ssh - 将 OpenNebula 数据存储从本地 FS 迁移到 NFS 的建议