码迷,mamicode.com
首页 > 其他好文 > 详细

static declaration follows non-static declaration

时间:2016-10-30 07:31:03      阅读:1058      评论:0      收藏:0      [点我收藏+]

标签:ext   ide   rc4   roi   ndk   隐藏   宏的使用   编译openssl   体系   

前段时间工作中要为android编译跨平台的第三方库,遇到了arc4random有关函数的“static declaration follows non-static declaration”问题,那是因为ndk提供的运行库对arc4random支持不一样,或只支持其它某几个函数或只支持其它另个几个函数,而第三方库的自动配置脚本遇见的要么全支持要么全不支持,提供了一份静态实现的代码。这是函数在运行库头文件中声明之后在实现代码中又声明了静态。解决也只能是每个cpu体系版本手动修改了。

今天在编译openssl 0.98b版也遇到这个错,这次是变量。下面就是这个元凶的真身:

技术分享

OPENSSL_IMPLEMENT_GLOBAL。

它想将变量名的变量隐藏成静态,导出一个访问函数,并且宏的使用可以对变量初始化,宏的结尾是没有";"封闭语句。

OPENSSL_IMPLEMENT_GLOBAL(int, some_var) = 1;你get到了吗。

然而却来了一个显式extern声明,然后引用, 最后来static定义并初始化。

没有IDE分析项目,找一个宏还真不好找,编译出错时,并不会提示宏在那里定义,只是指着宏有错,你还不知道这个宏是什么用意。虽然可以遍历目录从文件中找匹配字。

static declaration follows non-static declaration

标签:ext   ide   rc4   roi   ndk   隐藏   宏的使用   编译openssl   体系   

原文地址:http://www.cnblogs.com/bbqzsl/p/6012341.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!