错误:在“int”之前应有“=”、“,”、“;”、“asm”或“__attribute__”

2024-04-23

在 LINUX 中编译 C 程序时,我得到了以下信息。错误:

stream.h:1123: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
stream.h:1124: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'mblk_t'
stream.h:1125: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'mblk_t'

第 1123、1124 和 1125 行如下:

__STREAMS_EXTERN int adjmsg(mblk_t *mp, register ssize_t length);
__STREAMS_EXTERN mblk_t *allocb(size_t size, unsigned int priority);
__STREAMS_EXTERN mblk_t *copyb(register mblk_t *mp);

C 程序包含一个头文件,该头文件又包含stream.h 知道如何解决这个问题吗?


目前尚不清楚代码的上下文,但在我看来,您正在使用 OpenSSL 库(或者您正在从该源代码进行复制和粘贴)。

The streams_fastcall宏定义在kmem.h头文件。你把它包括在内了吗?如果您只是进行复制和粘贴,则只需在您的STREAMS_EXTERN定义:

#ifndef streams_fastcall
#if defined __i386__ || defined __x86_64__ || defined __k8__
#define streams_fastcall __attribute__((__regparm__(3)))
#else
#define streams_fastcall
#endif
#endif

Note: streams_fastcall sounds就像 Microsoft 特定的(但在 Windows 上广泛使用的)调用约定__fastcall。我猜他们用这个名字是因为它使用 这regparm属性来指定一些参数应该使用寄存器而不是堆栈来传递,这就是__fastcall定义(或者只是因为它更快!哈哈)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:在“int”之前应有“=”、“,”、“;”、“asm”或“__attribute__” 的相关文章

随机推荐