我正在尝试在 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下运行它们的必要。 你有什么想法我该怎么办?