Visual 2008上的标准C <signal.h>错误吗?

时间:2017-10-01 22:25:34

标签: c visual-studio visual-studio-2008 signals

我最近在CLI中添加了一项新功能,基于捕获“Ctrl + C”信号。 令我高兴的是,我发现<signal.h> is part of standard C,因此应该可以在任何符合C标准的环境中使用。

进入中断时的第一个操作是禁用所述中断,以避免堆叠多个相同的中断。 这可以通过以下方式轻松完成: signal(SIGINT, SIG_IGN);

不幸的是,对于Visual Studio 2008,它会生成以下警告:

  

警告C4306:'type cast':从'int'转换为'void(__ cdecl *)(int)'更大的尺寸

虽然它没有明确命名受影响的参数,但它似乎是定位SIG_IGN,其类型应为void (__cdecl *)(int)

SIG_IGN<signal.h>提供,因此它应该可以直接使用,不会出现任何演员问题。

问题是:

  • Visual 2008是否实现了<signal.h> buggy?
  • Visual的其他版本是否受到影响?
  • 如何解决这个问题?显式铸造?

(注意:我本地没有Visual Studio,因此我必须在发货前“猜测”行为。我正在接收远程运行的测试报告,但需要一些时间才能到达。)

0 个答案:

没有答案