首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C嵌入错误:‘XXXX’声明为返回函数的函数

C嵌入错误:‘XXXX’声明为返回函数的函数
EN

Stack Overflow用户
提问于 2017-11-23 00:44:57
回答 0查看 486关注 0票数 0

我正在尝试交叉编译LAPACK库(fortran)和C API,LAPACKE for bare-metal embedded targets powerpc-eabi target,使用针对此目标的gcc交叉编译器。编译会继续进行,但最终会遇到以下错误:

代码语言:javascript
运行
复制
[ 44%] Building C object LAPACKE/CMakeFiles/lapacke.dir/src/lapacke_cbbcsd.c.obj
cd /home/rcrozier/build/powerpc-eabi/lapack/LAPACKE && /usr/local/powerpc-eabi/bin/powerpc-eabi-gcc  -DADD_ -mcpu=750 -I/home/rcrozier/src/fast-v8-hg/cross-dependancies/lapack-3.6.0/LAPACKE/include    -o CMakeFiles/lapacke.dir/src/lapacke_cbbcsd.c.obj   -c /home/rcrozier/src/fast-v8-hg/cross-dependancies/lapack-3.6.0/LAPACKE/src/lapacke_cbbcsd.c
In file included from /home/rcrozier/src/fast-v8-hg/cross-dependancies/lapack-3.6.0/LAPACKE/include/lapacke_utils.h:37:0,
                 from /home/rcrozier/src/fast-v8-hg/cross-dependancies/lapack-3.6.0/LAPACKE/src/lapacke_cbbcsd.c:34:
/home/rcrozier/src/fast-v8-hg/cross-dependancies/lapack-3.6.0/LAPACKE/include/lapacke.h:145:22: error: ‘LAPACK_GLOBAL’ declared as function returning a function
 #define LAPACK_lsame LAPACK_GLOBAL(lsame,LSAME)
                      ^

在构建到LAPACK、LAPACKE的C接口时,会出现此错误。

post on the LAPACK forums提示这是Fortran名称损坏的问题,并添加了-DADD_处理器标志。上面我已经尝试过了,但是没有什么不同。

预处理器定义在一个头文件中使用,复制如下:

代码语言:javascript
运行
复制
#ifndef LAPACK_HEADER_INCLUDED
#define LAPACK_HEADER_INCLUDED

#ifndef LAPACK_GLOBAL
#if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_)
#define LAPACK_GLOBAL(lcname,UCNAME)  lcname##_
#elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER)
#define LAPACK_GLOBAL(lcname,UCNAME)  UCNAME
#elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE)
#define LAPACK_GLOBAL(lcname,UCNAME)  lcname
#else
#define LAPACK_GLOBAL(lcname,UCNAME)  lcname##_
#endif
#endif

#endif

错误出现在使用LAPACK_GLOBAL的另一个头文件中,如下所示:

代码语言:javascript
运行
复制
#include "lapacke_mangling.h"

#define LAPACK_lsame LAPACK_GLOBAL(lsame,LSAME)
lapack_logical LAPACK_lsame( char* ca,  char* cb,
                              lapack_int lca, lapack_int lcb );

lapacke_mangling.h文件内容如下所示:

代码语言:javascript
运行
复制
#ifndef LAPACK_HEADER_INCLUDED
#define LAPACK_HEADER_INCLUDED

#endif

在本地构建或为另一个linux目标powerpc-linux-gnu构建时,不会出现该错误。

有人能解释这个问题吗?

EN

回答

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

https://stackoverflow.com/questions/47439914

复制
相关文章

相似问题

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