vs2017について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
taka500

vs2017について

#1

投稿記事 by taka500 » 5年前

まずはコードなんですが
vs2005だと問題なし
でもvs2017ではコンパイルエラーになります

コード:

#include <windows.h>
#include <tchar.h>
#include <stdio.h>

int FormatMessageBox(TCHAR * szCaption, TCHAR * szFormat, ... )
{
	TCHAR szBuf[1024];
	va_list pList;
	va_start(pList, szFormat);
	_vsntprintf_s(szBuf, _ARRAYSIZE(szBuf), _TRUNCATE, szFormat, pList);
	va_end(pList);
	return MessageBox(NULL, szBuf, szCaption, MB_OK);
}

void FormatDebugString(TCHAR * szFormat, ... )
{
	TCHAR szBuf[1024];
	va_list pList;
	va_start(pList, szFormat);
	_vsntprintf_s(szBuf, _ARRAYSIZE(szBuf), _TRUNCATE, szFormat, pList);
	va_end(pList);
    OutputDebugString(szBuf);
}

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
	double hoge = 1.234567;

	FormatMessageBox(TEXT("TEST"), TEXT("%f"), hoge);
	FormatDebugString(TEXT("%f\n"), hoge);
	
	return 0;
}
vs2017は_vsntprintf_s を _vsnprintf と認識してまうのでしょうか
何かご存知の方おられましたら 宜しくお願い致します。

taka500

Re: vs2017について

#2

投稿記事 by taka500 » 5年前

自己解決しました

コード:



#include <windows.h>
#include <stdio.h>
#include <tchar.h>


int CDECL FormatMessageBox(TCHAR * szCaption, TCHAR * szFormat, ...)
{
	TCHAR szBuf[1024];
	va_list pList;
	va_start(pList, szFormat);
	_vsntprintf_s((TCHAR *)szBuf, _ARRAYSIZE(szBuf), _TRUNCATE, szFormat, pList);
	va_end(pList);
	return MessageBox(NULL, szBuf, szCaption, MB_OK);
}

void CDECL FormatDebugString(TCHAR * szFormat, ...)
{
	TCHAR szBuf[1024];
	va_list pList;
	va_start(pList, szFormat);
	_vsntprintf_s((TCHAR *)szBuf, _ARRAYSIZE(szBuf), _TRUNCATE, szFormat, pList);
	va_end(pList);
	OutputDebugString(szBuf);
}

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
	double hoge = 1.234567;
	TCHAR szTitle[] = TEXT("TEST");
	TCHAR szFormat[] = TEXT("%f");
	TCHAR szFormat2[] = TEXT("%f\n");

	FormatMessageBox(szTitle, szFormat, hoge);
	FormatDebugString(szFormat2, hoge);


	return 0;
}

これで良いようです

返信

“C言語何でも質問掲示板” へ戻る