简单的GTK示例中的预期声明说明符

问题描述 投票:0回答:1

我正在关注GTK introduction

我的前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窗口小部件。我记得我在没有Makefile的情况下编译该文件时没有问题。我不明白现在发生了什么变化。

c gtk
1个回答
0
投票

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

实际上,在这种情况下,GVIM或Code :: Block均未给出准确的错误。

最后,after a long configuration,我发现Visual Studio Code可以非常有效地发现丢失的{,因此建议使用IDE来支持这种编码。参见下面的截图:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.