【问题标题】:Get sigaction structure获取 sigaction 结构
【发布时间】:2021-12-27 18:48:41
【问题描述】:

尝试借助 Visual Studio 2019 在我通过 ssh 连接的 Raspberry Pi 机器上构建 paho_c_pub.c。代码使用编译器不可见的 中的structure sigaction

Error       invalid application of ‘sizeof’ to incomplete type ‘struct sigaction’
Error       storage size of ‘sa’ isn’t known

我在控制台中构建代码时没有这样的错误:

cc paho_c_sub.c pubsub_opts.c -o paho_c_sub -l paho-mqtt3as

Visual Studio C 项目配置有什么问题?

【问题讨论】:

    标签: c linux visual-studio sigaction


    【解决方案1】:

    你的代码需要有

    #define  _POSIX_C_SOURCE  200809L
    

    之前

    #include <signal.h>
    

    man 3 sigaction 中所述,在概要的对glibc 的功能测试宏要求 部分。

    无论何时编译代码,都应该启用警告 (-Wall)。

    如果没有上述定义,sigaction() 函数就不会公开,并且您的编译器使用标准 C 规则来确定传递给它的确切内容。它恰好可以工作,因为它需要一个 int 和两个指针作为参数;但是当启用警告时(尤其是当警告被视为错误时,如在 Visual Studio 2019 环境中),编译器会指出这个问题。 添加#define 应该使两者都能正常工作,而不是依赖偶然性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-20
      • 1970-01-01
      相关资源
      最近更新 更多