Скажем, если я скомпилирую следующее с использованием компилятора Visual Studio 2017 C ++:
int r = 0;
wprintf_s(L"%s", r);
Это даст мне очень удобные предупреждения:
предупреждение C4477: 'wprintf': строка формата "% s" требует аргумент типа 'wchar_t *', но аргумент 1 переменной имеет тип 'int'
предупреждение C4313: 'wprintf': '% s' в строке формата конфликтует с аргументом 1типа 'int'
Но когда я пытаюсь определить свою собственную переменную функцию:
void MyFormat(_In_z_ _Printf_format_string_ LPCTSTR pszFormat, ...)
{
va_list argList;
va_start( argList, pszFormat );
//Do work ...
va_end( argList );
}
, а затем вызываем ее аналогичным образом:
int r = 0;
MyFormat(L"%s", r);
Это не вызывает их.
Поэтому мне интересно, могу ли я включить эти предупреждения для своей собственной функции вариации?