c/c++语言开发共享为什么这个用C编译而不是C ++(sigaction)?

尝试使用g ++编译下面的代码时出现以下错误。 当我使用gcc编译它时它工作正常(除了一些警告)。 任何帮助赞赏。

g++ ush7.cpp ush7.cpp: In function 'int signalsetup(sigaction*, sigset_t*, void (*)(int))': ush7.cpp:93: error: expected unqualified-id before 'catch' ush7.cpp:95: error: expected primary-expression before 'catch' ush7.cpp:95: error: expected `;' before 'catch' ush7.cpp:97: error: expected primary-expression before 'catch' ush7.cpp:97: error: expected `;' before 'catch' ush7.cpp:100: error: expected primary-expression before 'catch' ush7.cpp:100: error: expected `)' before 'catch' ush7.cpp:108: error: expected `)' before ';' token ush7.cpp:108: error: expected `)' before ';' token ush7.cpp: In function 'int makeargv(const char*, const char*, char***)': ush7.cpp:137: error: invalid conversion from 'void*' to 'char*' ush7.cpp:145: error: invalid conversion from 'void*' to 'char**' 

 int signalsetup(struct sigaction *def, sigset_t *mask, void (*handler)(int)) { struct sigaction catch; catch.sa_handler = handler; /* Set up signal structures */ def->sa_handler = SIG_DFL; catch.sa_flags = 0; def->sa_flags = 0; if ((sigemptyset(&(def->sa_mask)) == -1) || (sigemptyset(&(catch.sa_mask)) == -1) || (sigaddset(&(catch.sa_mask), SIGINT) == -1) || (sigaddset(&(catch.sa_mask), SIGQUIT) == -1) || (sigaction(SIGINT, &catch, NULL) == -1) || (sigaction(SIGQUIT, &catch, NULL) == -1) || (sigemptyset(mask) == -1) || (sigaddset(mask, SIGINT) == -1) || (sigaddset(mask, SIGQUIT) == -1)) return -1; return 0; } 

    catch是C ++中的关键字,但不是C.

    请参阅我的相关答案C 在这里不是C ++的正确子集,或者甚至更好。

    如果您不想更改其余代码,则应该能够使用#define。

     #define catch _catch 

      以上就是c/c++开发分享为什么这个用C编译而不是C ++(sigaction)?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/544636.html

      (0)
      上一篇 2021年1月9日
      下一篇 2021年1月9日

      精彩推荐