【问题标题】:Expected ; after top level declarator, error in xcode预期的 ;在顶级声明符之后,xcode中的错误
【发布时间】:2013-06-12 08:31:08
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 看起来attribute_align_arg 尚未定义。您需要包含适当的头文件,根据谷歌是libavutil/internal.h
  • 如果不是@CaptainObvlious 的解决方案,您提供的代码上面的行是什么?
  • @Captain Obvlious,libavutil/internal.h 包含在 xcodes 标头路径中。该错误与对象的定义无关,也与未找到的.h 文件有关。这是关于(我认为)xcode 在上面声明中的 int attribute_align_arg 之后期待一个 ;
  • @cube 这意味着要么未定义,要么扩展为有效的标识符名称。无论问题是什么,它都被解释为变量声明。

标签: c++ c xcode


【解决方案1】:

我在使用自动完成时遇到了这个错误。

在插入函数参数时,XCode 将插入需要编辑但在 GUI 中显示为完全有效的 C++ 的占位符。

我花了几个小时才在另一个编辑器中检查了我的文件,发现不是预期的:

void func(int a)

XCode 已经插入

void func()

在 XCode 编辑器中,参数显示为带有浅蓝色背景的 int a,因此不容易发现是编译器错误的来源。

【讨论】:

  • 这太不可思议了!它看起来不像占位符
  • 我做了一个剪切粘贴并得到了类似的东西。里面肯定有一些特殊字符。我删除,重新输入,错误消失了:)
  • 有某种占位符,因为参数被放置在一个彩色框内。反正我有的时候也没有意识到问题。
  • 哇。什么……!!!太不可思议了。像这样表现的专业工具。佐德,好发现!谢谢你的回答。
  • 刚刚在 Codelite 中发生了同样的问题。
【解决方案2】:

我在将一个类移动到动态库但留下旧的导入后遇到了这个问题。注释掉旧的导入解决了这个问题(但这不是我寻找的第一件事,因为动态库导入更早并且也显示错误)。

【讨论】:

    【解决方案3】:

    我在以下代码的 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 */
    

    【讨论】:

      猜你喜欢
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多