「VC PlusPlus:VC2019Community コンパイルエラー snprintfが2重定義されている 対処方法」の版間の差分
(ページの作成:「VC PlusPlusに戻る == '''概要''' == 新しいVisual Studioを使っていると発生する事がある悲しいエラーです。昔は無かったので、誰かが作った既存のプロジェクトが再定義していることがあります。うまいこと、無効にしましょう。 <syntaxhighlight2 lang="text"> 1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1933,1): warning C4005: 'snprintf': マクロが再定…」) |
編集の要約なし |
||
(同じ利用者による、間の4版が非表示) | |||
3行目: | 3行目: | ||
新しいVisual Studioを使っていると発生する事がある悲しいエラーです。昔は無かったので、誰かが作った既存のプロジェクトが再定義していることがあります。うまいこと、無効にしましょう。 | 新しいVisual Studioを使っていると発生する事がある悲しいエラーです。昔は無かったので、誰かが作った既存のプロジェクトが再定義していることがあります。うまいこと、無効にしましょう。 | ||
< | <syntaxhighlight> | ||
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1933,1): warning C4005: 'snprintf': マクロが再定義されました。 | 1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1933,1): warning C4005: 'snprintf': マクロが再定義されました。 | ||
1>$(任意のプロジェクトへのパス名)(行番号): message : 'snprintf' の以前の定義を確認してください | 1>$(任意のプロジェクトへのパス名)(行番号): message : 'snprintf' の以前の定義を確認してください | ||
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1935,1): fatal error C1189: #error: Macro definition of snprintf conflicts with Standard Library function declaration | 1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1935,1): fatal error C1189: #error: Macro definition of snprintf conflicts with Standard Library function declaration | ||
</ | </syntaxhighlight> | ||
既存のプロジェクト側でsnprintfを定義している場合は以下のような箇所があるはずです。 | 既存のプロジェクト側でsnprintfを定義している場合は以下のような箇所があるはずです。 | ||
<syntaxhighlight | <syntaxhighlight> | ||
#ifdef _MSC_VER | #ifdef _MSC_VER | ||
#define snprintf _snprintf | #define snprintf _snprintf | ||
19行目: | 19行目: | ||
#indef~#endifで囲われていないパターンもあるかもしれません。 | #indef~#endifで囲われていないパターンもあるかもしれません。 | ||
<syntaxhighlight | <syntaxhighlight> | ||
#if _MSC_VER < 1900 | #if _MSC_VER < 1900 | ||
//#ifdef _MSC_VER | //#ifdef _MSC_VER |
2022年9月26日 (月) 09:52時点における最新版
VC PlusPlusに戻る
概要
新しいVisual Studioを使っていると発生する事がある悲しいエラーです。昔は無かったので、誰かが作った既存のプロジェクトが再定義していることがあります。うまいこと、無効にしましょう。
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1933,1): warning C4005: 'snprintf': マクロが再定義されました。
1>$(任意のプロジェクトへのパス名)(行番号): message : 'snprintf' の以前の定義を確認してください
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(1935,1): fatal error C1189: #error: Macro definition of snprintf conflicts with Standard Library function declaration
既存のプロジェクト側でsnprintfを定義している場合は以下のような箇所があるはずです。
#ifdef _MSC_VER
#define snprintf _snprintf
#endif
#indef~#endifで囲われていないパターンもあるかもしれません。
#if _MSC_VER < 1900
//#ifdef _MSC_VER
#define snprintf _snprintf
#endif
VS 2019 以前の場合だけ定義して動かすという意味にするとか、こんな感じに修正しましょう。もっと前のバージョン番号にしなければならないかもしれません。_MSC_VERという文字の上にカーソルを持って行くと、現在使っているVisual Studio C++のバージョン番号が表示されますので、そのバージョン以前が無効になるような数値を指定しましょう。今使っているバージョンでは現行のバージョンに含まれるstdio.h系を使うという意味です。
VC PlusPlusに戻る