当前位置: 首页 > 面试题库 >

结构提示不完全错误

伯君浩
2023-03-14
问题内容

尽管包括<signal.h>我,但我得到一个错误,说那struct sigaction是不完整的类型。

我不知道该怎么办。

请帮忙

#include <signal.h>
struct sigaction act;

int main(int argc, char** argv)
{
    int depth;

    /* validate arguments number*/
    if(argc < 2)
    {
        printf("fatal error: please use arguments <MaxChild> <MaxDepth>\n");
        exit(1);
    }

    /* register the realtime signal handler for sigchld*/

/*173*/
    memset(&act,0,sizeof(act));
    act.sa_handler = sigproc;
    sigaction(SIGCHLD,  /* signal number whose action will be changed */
             &act,      /* new action to do when SIGCHLD arrives*/
             NULL);     /* old action - not stored */


    srand(time(NULL));
    depth = rand() % atoi(argv[2]); /* [0 maxDepth]*/

    RecursiveFunc(atoi(argv[1]), depth);

    return 0;
}

错误消息:

proc.c: In function ‘main’:
proc.c:173:22: error: invalid application of ‘sizeof’ to incomplete type ‘struct sigaction’ 
proc.c:174:2: error: invalid use of undefined type ‘struct sigaction’
cc1: warnings being treated as errors
proc.c:175:2: error: implicit declaration of function ‘sigaction’

问题答案:

只是

#define _XOPEN_SOURCE 700

代码中的任何其他行之前,或使用-D定义定义预处理程序符号的选项进行编译

gcc ... -D_XOPEN_SOURCE=700 ...


 类似资料:
  • 将以下文件视为C文件: 但是,使用标志运行时,GCC不打印任何诊断。是我误解了标准,还是GCC没有打印这种未定义行为的诊断?

  • 我试图设计一个弹出窗口。我设计了它,它的工作原理,但有一个小问题。这是弹出窗口代码的一部分: 这就是我所说的: 弹出窗口在应该工作的时候工作。但是其中的内容没有完全显示。这是屏幕截图: 如何解决这个问题?

  • 我已经推了几个版本的应用在过去的几个月。然而,现在我有一个关于架构的错误,而我没有改变任何东西。 我的项目:体系结构:armv7、ARM64-$(ARCHS_STANDARD)有效的体系结构:arm64、armv7、armv7s 我的目标:体系结构:armv7,ARM64-$(ARCHS_STANDARD)有效体系结构:arm64,armv7 子项目目标:体系结构:armv7、ARM64-$(AR

  • 你能帮我做一下ElasticSearch吗?建议:https://www.elastic.co/guide/en/ElasticSearch/reference/5.1/search-suggesters-completion.html 我在ES索引中创建了类型 curl-xput“localhost:9200/tass_suggest_test/_mapping/company?pretty”-

  • Display global messages as feedback in response to user operations. Normal prompt Normal message for information. <w class="button-container"> <button ref="open-normal-message" class="btn btn-primar

  • 1和2都是有效的,因为没有标准化的行为,由媒体类型决定如何处理它。这感觉不对,因为PUT不是从属于资源本身,而是替换资源。 请记住,我不是在问什么是正确的,什么是有意义的。我在问哪一个是标准支持的。