use*_*196 6 c xcode ffmpeg clang
嗨,我正在使用xcode编译ffmpeg,我相信使用clang进行编译.在ffmpeg中有一个带有名为'class'的成员变量的结构.我相信这在C中完全没问题,但clang试图将其解析为关键字.知道怎么解决?基本上cpp文件中的以下内容会导致错误:
extern C {
typedef struct {
int class;
} SomeStruct;
}
Run Code Online (Sandbox Code Playgroud)
它试图将类解释为关键字.
FYI在ffmpeg中抛出错误的文件是libavcodec/mpegvideo.h,我需要包含它来访问MpegEncContext结构以提取运动图信息.
编辑
上面的代码示例只是为了演示错误.但也许它可以通过另一种方式解决.在我的实际代码中,我有这样的:
#ifdef __cplusplus
extern "C" {
#endif
#include "libavcodec/mpegvideo.h"
#include "libavformat/avformat.h"
#if __cplusplus
} //Extern C
#endif
Run Code Online (Sandbox Code Playgroud)
我如何将这两个文件包含为C文件而不是C++?
谢谢
在C中完全没问题。将其构建为C ++时,会遇到错误,因为class它是C ++关键字。
就修复而言,您通常会选择以外的其他标识符class。但是,ffmpeg开发人员可能对此更改不太满意。因此,您可能需要:
幸运的是,在这种情况下,您还使用了C编译器,该编译器很好地支持C99功能。对于ffmpeg源代码,不能很好地支持C99的C编译器特别麻烦(因为您随后将整个程序作为C99功能的C ++编译,并且冲突计数会更高)。
(还有其他肮脏的技巧可以尝试解决此问题,但我不会提及它们)
| 归档时间: |
|
| 查看次数: |
1513 次 |
| 最近记录: |