c - 错误 : expected '=' , ','、 ';'、 'asm' 或 '__attribute__' 之前的 'int'

标签 c header-files

在 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 库(或者您正在从该源代码中进行复制和粘贴)。

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

注意:streams_fastcall 听起来 类似于名为 __fastcall 的 Microsoft 特定(但在 Windows 上广泛使用)调用约定.我猜他们使用那个名字是因为它使用 regparm 属性指定一些参数应该使用寄存器而不是堆栈传递,这就是 __fastcall 定义的(或者仅仅是因为它更快!大声笑)

关于c - 错误 : expected '=' , ','、 ';'、 'asm' 或 '__attribute__' 之前的 'int',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10499389/

相关文章:

C: byte-copy unsigned char 值

c++ - 该标准是否指定哪些 header 包含其他 header ?

c - 生成错误 : multiple definition of

rust - Rust 中处理 C 头文件的自动工具?

c - 头文件中的全局变量

objective-c - 使用@class 访问委托(delegate)协议(protocol)声明

c - 在 C 语言中,当您将 NULL 指针传递给 strcmp() 时究竟会发生什么?

c++ - objdump 和 objcopy 作为 c/c++ 库

c++ - 结构的大小如何随不同的数据类型而变化

c - 我是否需要 C 中的正则表达式来进行此字符串比较