我正在使用sigalstack结构,详情请参阅:
我只是声明它是这样的
struct sigaltstack aa;
我不断收到以下错误
error: storage size of ‘aa’ isn’t known
我阅读并检查storage size of ‘names’ isn’t known,但我只是声明它,所以它并不真正适用。
答案 0 :(得分:1)
你不能像这样使用未初始化的备用堆栈。您必须在其ss_sp
字段中为堆栈分配空间,并在其ss_size
字段中设置相应的大小。
您链接的man7链接有更多相关信息。实际上,它在页面底部提供了一个示例:
stack_t ss;
ss.ss_sp = malloc(SIGSTKSZ);
if (ss.ss_sp == NULL)
/* Handle error */;
ss.ss_size = SIGSTKSZ;
ss.ss_flags = 0;
if (sigaltstack(&ss, NULL) == -1)
/* Handle error */;
希望有所帮助。
答案 1 :(得分:1)
您链接到的Mac OS页面(在“遗产概要”部分中):
兼容性
使用(过时的)
sigaltstack
结构将导致编译器诊断。使用stack_t
中定义的<signal.h>
。
这表明您不应该尝试使用struct sigaltstack
。该页面还显示了您希望如何在Mac OS上执行此操作。 Linux页面还显示了您应该如何使用stack_t
类型,并且根本没有提及struct sigaltstack
。