본문 바로가기

컴퓨터 & 프로그래밍/etc.

Release와 Debug 모드에서의 가변변수사용

Release와 Debug 모드에서 가변변수가 입력되는 순서가 요상하게 다르다.

아래와 같은 함수에서, ...의 가변변수 부분에는 double * 가 넘어간다.

debug 모드에서는 분명히 va_start 다음에 va_arg 를 부르면 그 다음 차례인 len이 넘어오는데,
release 모드에서는 앞에 명시한 n과 len은 무시하고 va_arg를 호출하는 순간 ...의 가변변수 (즉 double *) 가 차례대로 넘어온다...

void call_v_arg(int n, int len,  ...){
    va_list va;
    va_start( va, n);
//    double *test = va_arg( va, double* );
//    len = va_arg( va, int );
}

현재 MS .net 2005 sp1 사용중인데, 이건 MS VC만의 문제(?)일까? 아니면 원래 표준이 그렇게 되어 있는 것일까? 흠... 혹시 아시는 분 계신가요? ^^;;