首页 > 解决方案 > 简单 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 时,我编译该文件时没有问题。我不明白现在发生了什么变化。

标签: cgtk

解决方案


这是没有有用的 IDE 的问题。

事实上,在这种情况下,GVIM 和 Code::Blocks 都没有给出准确的错误。

最后,经过长时间的配置,我发现 Visual Studio Code 可以非常有效地发现缺失{,因此建议使用 IDE 来支持这种编码。请看下面的截图:

在此处输入图像描述


推荐阅读