我有这个非常奇怪的问题,只在我的项目中.我正在使用XCode 4.3.6并尝试将Accelerating Framework添加到我的项目中.所以在我的文件中我只是做一个简单的import语句:
#import
然后我构建我的项目并在指向这些行的文件clapack.h
文件中获得4个错误vecLib.framework
:
int claswp_(__CLPK_integer *n, __CLPK_complex *a, __CLPK_integer *lda, __CLPK_integer * k1, __CLPK_integer *k2, __CLPK_integer *ipiv, __CLPK_integer *incx) __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_4_0); int dlaswp_(__CLPK_integer *n, __CLPK_doublereal *a, __CLPK_integer *lda, __CLPK_integer *k1, __CLPK_integer *k2, __CLPK_integer *ipiv, __CLPK_integer *incx) __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_4_0); int slaswp_(__CLPK_integer *n, __CLPK_real *a, __CLPK_integer *lda, __CLPK_integer *k1, __CLPK_integer *k2, __CLPK_integer *ipiv, __CLPK_integer *incx) __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_4_0); int zlaswp_(__CLPK_integer *n, __CLPK_doublecomplex *a, __CLPK_integer *lda, __CLPK_integer *k1, __CLPK_integer *k2, __CLPK_integer *ipiv, __CLPK_integer *incx) __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_4_0);
所有这些错误都显示出错过预期的结束括号')' k1
.奇怪的是,我根本没有在任何其他项目中得到这些错误.这个错误的原因是什么?如果有人能为此提出解决方案,我会非常感激.
您的代码(或之前包含的标题之一<Accelerate/Accelerate.h>
)定义了一个带有名称的宏k1
.就像是:
#define k1 *some expression*
系统库使用像这样的"常见"参数名称的错误就是出于这个原因,但出于同样的原因,将它们用作宏名称也是一种不好的风格.
您可以通过以下几种方法解决此问题:
更改宏的名称.
移动宏的定义,使其在包含Accelerate标头后出现.
如果您没有使用LAPACK函数,而是使用Accelerate的其他部分,则可以阻止编译器通过include-guard滥用来查看clapack.h原型:
#define __CLAPACK_H // hide clapack.h prototypes #import <Accelerate/Accelerate.h>