变量具有不完整的类型“结构提示”

时间:2019-08-01 14:50:37

标签: c linux signals qt-creator

我正在尝试在 Windows 7 下的 Qt Creator 4.9.1 中启动教程示例。我使用的是 MinGW 7.3.0 32位编译器

我收到编译错误:“ 变量的类型'struct sigaction '不完整”,在尝试使用<signal.h>中的函数时。

我已经采取了一些措施来编码一些建议,例如来自本主题的建议: struct sigaction incomplete error

我尝试添加任何类型的宏定义,例如:_XOPEN_SOURCE_POSIX_C_SOURCE。另外,我在.pro文件中添加了QMAKE_CFLAGS += -std=gnu-99

所有这些似乎都没用。

我还安装了Cygwin,但尚不清楚如何将其添加到QT Creator中,以及是否对我来说有用。

//#define _POSIX_C_SOURCE 200809L
//#define _XOPEN_SOURCE_EXTENDED 1
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <windows.h>

void handle_interrupt(int sig){
    puts("Прощай, жестокий мир..\n");
    exit(1);
}

int catch_signal(int sig, void (*handler) (int)){
    struct sigaction action;
    action.sa_handler = handler;
    sigemptyset(&action.sa_mask);
    action.sa_flags = 0;
    return sigaction(sig, &action, NULL);
}

int main()
{
    SetConsoleCP(65001);
    SetConsoleOutputCP(65001);
    handle_signal(SIGINT);
    if (catch_signal(SIGINT, handle_interrupt) == -1){
        fprintf(stderr, "Не могу подобрать обработчик");
        exit(2);
    }
    char name[30];
    printf("Введите свое имя:");
    fgets(name, 30, stdin);
    printf("Привет, %s\n", name);
    return 0;
}

我需要一种在Windows平台下编译程序的方法,旨在在Linux下运行它们,而不是在Windows下运行它们的必要。 你有什么想法我该怎么办?

0 个答案:

没有答案