You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2019 SSH远程编译树莓派paho项目报struct sigaction不完整错误

错误根因分析

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

上述报错是VS2019跨平台SSH编译Linux程序时的典型配置问题,和树莓派本地环境无关,核心原因有两个:

  1. 预处理器宏配置缺失:struct sigaction属于POSIX标准扩展定义的结构体,默认情况下C标准库的signal.h不会暴露该结构体的完整定义,需要显式开启POSIX特性相关的宏。树莓派本地的cc(gcc)默认会开启对应POSIX宏,所以本地编译无报错,而VS2019的跨平台编译配置默认没有添加这些宏。
  2. 头文件搜索路径优先级错误:VS2019可能错误索引了本地Windows的头文件,而非树莓派远程环境的标准头文件,导致读取的signal.h没有对应结构体定义。
修复步骤
  • 第一步:添加POSIX特性宏:打开VS项目属性,进入「C/C++ -> 预处理器 -> 预处理器定义」,添加以下两个宏:
    _POSIX_C_SOURCE=200809L
    __USE_POSIX=1
    
  • 第二步:调整远程头文件优先级:进入项目属性「C/C++ -> 常规 -> 附加包含目录」,按顺序添加树莓派远程的头文件路径:
    32位树莓派:
    /usr/include
    /usr/include/arm-linux-gnueabihf
    
    64位树莓派:
    /usr/include
    /usr/include/aarch64-linux-gnu
    
  • 第三步:确认工具集配置正确:进入项目属性「配置属性 -> 常规 -> 平台工具集」,确认选择GCC for Remote Linux,而非Windows平台的MSVC工具集。

修改完成后重新编译即可解决问题。

内容的提问来源于stack exchange,提问作者vico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:06:03