尝试在通过ssh连接的树莓派机器上借助Visual Studio2019构建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-mqtt3asVisual Studio C项目配置有什么问题?
发布于 2021-11-16 18:05:36
你的代码需要有
#define _POSIX_C_SOURCE 200809L在
#include <signal.h>正如man 3 sigaction中所述,在概要的glibc部分的功能测试宏要求中。
无论何时编译代码,都应该启用警告(-Wall)。
如果没有上面的定义,sigaction()函数就不会公开,您的编译器将使用标准C规则来确定要传递给它的确切内容。它碰巧起作用了,因为它接受一个int和两个指针作为参数;但是当启用警告时(特别是当警告被视为错误时,就像在Visual Studio 2019环境中一样),编译器就会指出这个问题。添加#define应该会使两者都正常工作,而不依赖于偶然性。
https://stackoverflow.com/questions/69993434
复制相似问题