“_snprintf”未在此范围内声明

‘_snprintf’ was not declared in this scope

本文关键字:范围内 声明 snprintf      更新时间:2023-10-16

我正在做一个ffmepg c++项目,该项目在hpp文件中链接了一个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。如果我删除 sprintf sprintf_s #define 行,它会给出错误:

segmentation fault(core dumped)

由于 ffmpeg 与 C++ 不兼容,我将 stdio.hcstdio 都包含在外部 C 和外部 C 中,但错误继续显示出来。问题出在哪里?如何解决?

首先更改此行

include <assert.h>

跟:

#include <assert.h>

并写下这一行

#define snprintf _snprintf

包含并尝试编译代码后