首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取sigaction结构

获取sigaction结构
EN

Stack Overflow用户
提问于 2021-11-16 17:15:25
回答 1查看 18关注 0票数 0

尝试在通过ssh连接的树莓派机器上借助Visual Studio2019构建paho_c_pub.c。代码使用来自的编译器不可见的structure sigaction

代码语言:javascript
复制
Error       invalid application of ‘sizeof’ to incomplete type ‘struct sigaction’
Error       storage size of ‘sa’ isn’t known

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

代码语言:javascript
复制
cc paho_c_sub.c pubsub_opts.c -o paho_c_sub -l paho-mqtt3as

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

EN

回答 1

Stack Overflow用户

发布于 2021-11-16 18:05:36

你的代码需要有

代码语言:javascript
复制
#define  _POSIX_C_SOURCE  200809L

代码语言:javascript
复制
#include <signal.h>

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

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

如果没有上面的定义,sigaction()函数就不会公开,您的编译器将使用标准C规则来确定要传递给它的确切内容。它碰巧起作用了,因为它接受一个int和两个指针作为参数;但是当启用警告时(特别是当警告被视为错误时,就像在Visual Studio 2019环境中一样),编译器就会指出这个问题。添加#define应该会使两者都正常工作,而不依赖于偶然性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69993434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档