预期;在顶级声明符之后,xcode中出错

时间:2013-06-16 02:42:28

标签: c++ c xcode

我正在使用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(....

为什么呢?我该怎么做才能解决这个问题。

谢谢。

3 个答案:

答案 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)

将类移到动态库后,我碰到了这个问题,但保留了旧的导入内容。注释掉旧的导入即可解决该问题(但是,这并不是我所寻找的第一件事,因为动态库导入更早并且还显示了错误)。