当前位置: 技术问答>linux和unix
C语言基础问题,参数定义在函数名后面,是为什么?
来源: 互联网 发布时间:2016-11-10
本文导语: 我看到有个函数的定义是这样写的, 从网上下载的源码, void LLcInit (context) LLC_CTX *context; /* context */ { context->count[0] = context->count[1] = 0; /* Load magic initialization constants. */ cont...
我看到有个函数的定义是这样写的, 从网上下载的源码,
void LLcInit (context)
LLC_CTX *context; /* context */
{
context->count[0] = context->count[1] = 0;
/* Load magic initialization constants.
*/
context->state[0] = 0x67442301;
context->state[1] = 0xfdcdbb89;
context->state[2] = 0x93bcdefe;
context->state[3] = 0x19365f76;
}
这个函数在一个环境下编译没有问题,并且可以正常使用,但是在另外一个平台下编译时,就报错,说
variable or field 'LLcInit' declared void
'context' was not declared in this scope
expected unqualified-id before '{' token
请问如何解决呢?我觉得这样写法,应该是没有问题的,但是不知道如何设置才能在另外一个平台上编译通过?比如修改哪个编译选项?
void LLcInit (context)
LLC_CTX *context; /* context */
{
context->count[0] = context->count[1] = 0;
/* Load magic initialization constants.
*/
context->state[0] = 0x67442301;
context->state[1] = 0xfdcdbb89;
context->state[2] = 0x93bcdefe;
context->state[3] = 0x19365f76;
}
这个函数在一个环境下编译没有问题,并且可以正常使用,但是在另外一个平台下编译时,就报错,说
variable or field 'LLcInit' declared void
'context' was not declared in this scope
expected unqualified-id before '{' token
请问如何解决呢?我觉得这样写法,应该是没有问题的,但是不知道如何设置才能在另外一个平台上编译通过?比如修改哪个编译选项?
|
这种风格应该是K&R,不符合ANSI C标准
应该改为这样
void LLcInit (LLC_CTX *context)
或者试试用c89来编译呢
应该改为这样
void LLcInit (LLC_CTX *context)
或者试试用c89来编译呢
|
说白一点就是很古老的风格,现在不常见,只能在一些以前的项目代码或书籍中看到。现在一般都是像
void LLcInit (LLC_CTX *context)
这个形式。
一些编译器为了兼容NASI之前的代码,也会支持那种风格的。
2楼说得对,换个形式试试。
void LLcInit (LLC_CTX *context)
这个形式。
一些编译器为了兼容NASI之前的代码,也会支持那种风格的。
2楼说得对,换个形式试试。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。