首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含ucontext.h时无法编译

包含ucontext.h时无法编译
EN

Stack Overflow用户
提问于 2013-12-18 18:16:59
回答 1查看 1.3K关注 0票数 2

使用gcc,我在编译一些使用ucontext.h的东西时会得到这些错误。

代码语言:javascript
复制
    /usr/include/sys/ucontext.h: At top level:
    /usr/include/sys/ucontext.h:138: error: expected identifier or ‘(’ before numeric constant
    /usr/include/sys/ucontext.h:139: error: expected ‘;’ before ‘stack_t’

看看ucontext.h,这似乎就是导致:

代码语言:javascript
复制
    134 /* Userlevel context.  */
    135 typedef struct ucontext
    136   {
    137     unsigned long int uc_flags;
    138     struct ucontext *uc_link;
    139     stack_t uc_stack;
    140     mcontext_t uc_mcontext;
    141     __sigset_t uc_sigmask;
    142     struct _libc_fpstate __fpregs_mem;
    143   } ucontext_t;

第138和139行如何产生这些错误?不知道该怎么做,因为这是一个标准的sys头。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-18 18:40:27

这个问题可能是由代码中某个地方的#define引起的,它将uc_link定义为某个整数。

示例:

代码语言:javascript
复制
#define uc_link 22

在Unix/Linux中找到它的最有效方法是在源代码目录上运行grep -r "uc_link" .。如果使用git来管理源代码,则可以使用git grep "uc_link"

如果这个定义存在于一个文件中,并且在其中使用了ucontext.h,那么您应该尝试将您的ucontext逻辑与需要此#define的逻辑分离开来。

另外,我必须指出,使用不属于#define的ALL_CAPS是一种不好的做法。其中一个原因很好地反映了您遇到的问题,另一个原因是,每个人都希望它们是ALL_CAPS,而您的代码对于其他想要与您协作的程序员来说变得更难理解和更难读。

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

https://stackoverflow.com/questions/20665478

复制
相关文章

相似问题

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