信号 - SIGPIPE未在此范围内声明

时间:2017-06-23 05:15:20

标签: c++ signals

我有一个项目,我从qt 4移植到qt 5.我收到标题中提到的错误。我已经包含了头文件(signal.h)。以下是代码。

signal(SIGPIPE,SIG_IGN);

我在互联网上搜索过但找不到任何出错的原因。还要注意,如果我将SIGINT放在SIGPIPE的位置,那么我不会收到任何错误。

感谢任何帮助。

Windows 10上的Qt 5.7版

1 个答案:

答案 0 :(得分:0)

Microsoft Windows page for "signal"(截至其编辑日期至少为2月20日),在其备注部分中,表示“sig”参数(SIGPIPE)必须是其中一个常量上市。但是,未列出SIGPIPE

看起来您不仅尝试在不同的Qt版本之间移植,而且您还尝试在类Unix操作系统(如Linux)和Windows操作系统之间移植。

要解决此问题,请执行以下操作之一:

  1. 至少编译时有条件地删除SIGPIPE处理代码(使用#ifdef SIGPIPE预处理器命令之类的代码,从不支持{{1}的平台中排除SIGPIPE代码}}),或
  2. 请勿尝试将代码移植到任何不支持SIGPIPE的操作系统。
  3. 顺便说一句,这似乎与Qt的信号(信号和插槽)机制无关(因为这个问题最初是用标记的)。