我正在使用xcode中的这个utils.c文件,其中包含以下内容:
#if FF_API_AVCODEC_OPEN
int attribute_align_arg avcodec_open(AVCodecContext *avctx, AVCodec *codec)
{
return avcodec_open2(avctx, codec, NULL);
}
在此行的xcode中导致Expected ; after top level declarator
,错误(在构建期间):int attribute_align_arg avcodec_open(....
为什么呢?我该怎么做才能解决这个问题。
谢谢。
答案 0 :(得分:39)
使用自动完成时遇到此错误。
插入函数的参数时,XCode将插入需要编辑的占位符,但在GUI中显示为完全有效的C ++。
我花了几个小时才在另一个编辑器中检查了我的文件,揭示了这个而不是预期的:
void func(int a)
XCode实际已插入
void func(< #int a#>)
在XCode编辑器中,参数显示为浅蓝色背景的int a
,因此不容易将其视为编译器错误的来源。
答案 1 :(得分:1)
对于以下代码,我在xcode中遇到类似的错误:
#ifndef Parser_hpp
#define Parser_hpp
#include <string>
std::string getTitle();
#endif /* Parser_hpp */
原因是代码必须用C ++预处理程序指令包装。像这样:
#ifndef Parser_hpp
#define Parser_hpp
#if defined __cplusplus
#include <string>
std::string getTitle();
#endif /* __cplusplus */
#endif /* Parser_hpp */
答案 2 :(得分:0)
将类移到动态库后,我碰到了这个问题,但保留了旧的导入内容。注释掉旧的导入即可解决该问题(但是,这并不是我所寻找的第一件事,因为动态库导入更早并且还显示了错误)。