나는 printf
또한 va_list
걸릴 것하지만 난 그렇게 할 때, printf
내가 printf
하고 싶은 일을하지 않고, thougt :이상한 행동
void Log(int loglevel, char* string, ...)
{
va_list args;
va_start(args, string);
switch (type)
{
case LOGLEVEL_FATAL:
printf("FATAL: ");
break;
case LOGLEVEL_ERROR:
printf("ERROR: ");
break;
case LOGLEVEL_WARNING:
printf("WARNING: ");
break;
case LOGLEVEL_INFO:
printf("INFO: ");
break;
}
printf(string, args);
va_end(args);
}
내가 지금 호출 할 때 :
Log(LOGLEVEL_INFO, "testvariable = %f", 16.0);
출력은 :
INFO: testvariable = 0.000000
,
하지만 왜?
내 실수는 무엇입니까?
하지만 난()'의 printf'에'va_list'을 전달하면 오류가 발생합니다 해달라고 이유는 무엇입니까? – bricklore
@ Schnizel1337 :'printf()'는 타입 안전하지 않기 때문입니다. 귀하의 경우에는'double'을 기대하고'va_list'를 얻습니다. 그러나 이것은 점검되지 않습니다. – NPE
@ Schnizel1337'printf()'는 형식 지정자에 따라 아무 것도 받아들이고 인수 **만을 해석합니다 **. 'va_list'는 하나의 인자입니다. 'va_list '에 대한 형식 지정자를 보았습니까? – Angew