質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

11449閲覧

Visual studioにおけるビルド時のsnprintfのエラー

muton

総合スコア31

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/12/10 10:23

編集2018/12/11 09:42

該当のソースコード

C++

1 #if defined snprintf 2 // This definition of snprintf will generate "warning C4005: 'snprintf': macro 3 // redefinition" with a subsequent line indicating where the previous definition 4 // of snprintf was. This makes it easier to find where snprintf was defined. 5 #pragma warning(push, 1) 6 #pragma warning(1: 4005) 7 #define snprintf Do not define snprintf as a macro 8 #pragma warning(pop) 9 #error Macro definition of snprintf conflicts with Standard Library function declaration 10 #endif 11

発生している問題・エラーメッセージ

torcsというオープンソースコードのカーシュミレーションソフトのプロジェクトファイルをコンパイルしたいと考えています. そこで,Visual studio 2017においてビルドを行うとエラーが発生してしまいます. 2000行程あり,全てのコードを載せることはできませんが,上記の #error Macro definition of snprintf conflicts with Standard Library function declarationの部分でエラーが発生しています. 対策としてどのようなことが考えられるでしょうか. 宜しくお願い致します. 重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー C1189 #error: Macro definition of snprintf conflicts with Standard Library function declaration tgf c:\users\owner\desktop\torcs-1.3.7\stdio.h 1935

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

snprintf というマクロが定義されているとそのエラーが出るようになってますね

そのマクロを削除すればそのエラーは出なくなりますね

投稿2018/12/10 11:14

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

muton

2018/12/10 11:24

回答ありがとうございます. snprintf というマクロというのは,snprintfという名前の.hファイルのことでしょうか? snprintfをパソコン上で検索しても出てこないため,どのように削除するのかわからないです. 宜しくお願い致します.
muton

2018/12/11 04:35

回答ありがとうございます.snprintf 関数というものがあることが分かりました. 以下がsnprintfを含む箇所になるのですが,どのように修正すれば良いでしょうか. 宜しくお願い致します. _Success_(return >= 0) _ACRTIMP int __cdecl __stdio_common_vsnprintf_s( _In_ unsigned __int64 _Options, _Out_writes_opt_z_(_BufferCount) char* _Buffer, _In_ size_t _BufferCount, _In_ size_t _MaxCount, _In_z_ _Printf_format_string_params_(2) char const* _Format, _In_opt_ _locale_t _Locale, va_list _ArgList ); _Success_(return >= 0) _ACRTIMP int __cdecl __stdio_common_vsprintf_p( _In_ unsigned __int64 _Options, _Out_writes_z_(_BufferCount) char* _Buffer, _In_ size_t _BufferCount, _In_z_ _Printf_format_string_params_(2) char const* _Format, _In_opt_ _locale_t _Locale, va_list _ArgList ); _Success_(return >= 0) _Check_return_opt_ _CRT_INSECURE_DEPRECATE(_vsnprintf_s_l) _CRT_STDIO_INLINE int __CRTDECL _vsnprintf_l( _Out_writes_opt_(_BufferCount) _Post_maybez_ char* const _Buffer, _In_ size_t const _BufferCount, _In_z_ _Printf_format_string_params_(2) char const* const _Format, _In_opt_ _locale_t const _Locale, va_list _ArgList ) #if defined _NO_CRT_STDIO_INLINE ; #else { int const _Result = __stdio_common_vsprintf( _CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_LEGACY_VSPRINTF_NULL_TERMINATION, _Buffer, _BufferCount, _Format, _Locale, _ArgList); return _Result < 0 ? -1 : _Result; } #endif _Success_(return >= 0) _Check_return_opt_ _CRT_STDIO_INLINE int __CRTDECL _vsnprintf( _Out_writes_opt_(_BufferCount) _Post_maybez_ char* const _Buffer, _In_ size_t const _BufferCount, _In_z_ _Printf_format_string_ char const* const _Format, va_list _ArgList ) #if defined _NO_CRT_STDIO_INLINE ; #else { #pragma warning(push) #pragma warning(disable: 4996) // Deprecation return _vsnprintf_l(_Buffer, _BufferCount, _Format, NULL, _ArgList); #pragma warning(pop) } #endif #if defined vsnprintf // This definition of vsnprintf will generate "warning C4005: 'vsnprintf': macro // redefinition" with a subsequent line indicating where the previous definition // of vsnprintf was. This makes it easier to find where vsnprintf was defined. #pragma warning(push, 1) #pragma warning(1: 4005) #define vsnprintf Do not define vsnprintf as a macro #pragma warning(pop) #error Macro definition of vsnprintf conflicts with Standard Library function declaration #endif _Success_(return >= 0) _Check_return_opt_ _CRT_STDIO_INLINE int __CRTDECL vsnprintf( _Out_writes_opt_(_BufferCount) _Always_(_Post_z_) char* const _Buffer, _In_ size_t const _BufferCount, _In_z_ _Printf_format_string_ char const* const _Format, va_list _ArgList ) #if defined _NO_CRT_STDIO_INLINE ; #else { int const _Result = __stdio_common_vsprintf( _CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR, _Buffer, _BufferCount, _Format, NULL, _ArgList); return _Result < 0 ? -1 : _Result; } #endif _Success_(return >= 0) _Check_return_opt_ _CRT_INSECURE_DEPRECATE(_vsprintf_s_l) _CRT_STDIO_INLINE int __CRTDECL _vsprintf_l( _Pre_notnull_ _Always_(_Post_z_) char* const _Buffer, _In_z_ char const* const _Format, _In_opt_ _locale_t const _Locale, va_list _ArgList ) #if defined _NO_CRT_STDIO_INLINE ; #else { #pragma warning(push) #pragma warning(disable: 4996) // Deprecation return _vsnprintf_l(_Buffer, (size_t)-1, _Format, _Locale, _ArgList); #pragma warning(pop) } #endif _Success_(return >= 0) _Check_return_opt_ _CRT_INSECURE_DEPRECATE(vsprintf_s) _CRT_STDIO_INLINE int __CRTDECL vsprintf( _Pre_notnull_ _Always_(_Post_z_) char* const _Buffer, _In_z_ _Printf_format_string_ char const* const _Format, va_list _ArgList ) #if defined _NO_CRT_STDIO_INLINE ; #else { #pragma warning(push) #pragma warning(disable: 4996) // Deprecation return _vsnprintf_l(_Buffer, (size_t)-1, _Format, NULL, _ArgList); #pragma warning(pop) } #endif
guest

0

自己解決

解決法

このコードは昔に書かれたもので,それ以来Visual Studioに定義が追加されているから 二重定義になっていたようです. そのため, #define snprintf _snprintf を次のように変更したところ,エラーが発生しなくなりました。 たくさんの回答ありがとうございました. #if _MSC_VER < 1900 # define snprintf _snprintf #endif

投稿2018/12/11 09:46

muton

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Visual studio 2017 の <stdio.h>と
torcs の <stdio.h> の両方が include されてませんか?

投稿2018/12/11 09:38

編集2018/12/11 09:45
kani-tarou

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問