'_snprintf'未在此范围内声明

时间:2015-03-24 15:02:32

标签: c++ c ffmpeg printf

我正在研究一个链接hpp文件的ffmepg c ++项目,在hpp文件中:

#define snprintf _snprintf
#include <stdio.h>
#include <cstdio>
#include <unistd.h>
include <assert.h>

#if defined _MSC_VER && _MSC_VER >= 1200
#pragma warning( disable: 4244 4510 4512 4610 4146 4996 4005)

#define sprintf sprintf_s
#define _sprintf _sprintf_s
#define _snprintf _snprintf_s

#endif  


snprintf (oc->filename, sizeof(oc->filename), "%s", filename);

它给出了错误:

‘_snprintf’ was not declared in this scope

错误显示'_ snprintf'非常奇怪,而我使用的是'snprint'。这段代码是由其他人写的,我不明白他使用的这些 #define 。如果我删除 #define sprintf sprintf_s 这一行,则会出错:

segmentation fault(core dumped)

由于ffmpeg与C ++不兼容,我在 extern C 中包含了 stdio.h cstdio > extern C ,但错误继续显示出来。问题是什么?如何解决?

1 个答案:

答案 0 :(得分:4)

首先更改此行

include <assert.h>

使用:

#include <assert.h>

并写下这一行

#define snprintf _snprintf

包含并尝试编译代码