2010-12-11 4 views
2

내 자신의 printf 함수를 만들려고하는데 작동하지 않습니다. 출력이 올바른 형식 인 것 같지만 매개 변수가 제대로 전달되지 않고 쓰레기 값이 표시됩니다. 나는 GCC를 사용하고있다. 아래 코드를 참조하십시오.내 varidic 인수가 C에서 작동하지 않는 이유는 무엇입니까?

printf_buffer는이 버전에서 128 바이트 인 CON_TMPSIZE 바이트 길이로 정의됩니다. 이것은 소형 마이크로 컨트롤러 용이지만 모든 프로세서에이 원칙이 적용될 것으로 기대합니다.

나는 이런 식으로 호출 오전 :

con_printf("LOOP a %d\n", 0, 10); 
con_printf("LOOP b %d\n", 0, 12); 

나는 LOOP 10가 첫 번째 줄에 인쇄하고, LOOP 12 (B) 다음에 기대,하지만 난 루프 A (542) 및 루프 B (542)을 얻는다.

+0

이 친절하게 우리에게 발신자를 표시하고, 인수에 전달되는 – EvilTeach

+0

@EvilTeach - 추가 호출 코드에 대한 –

답변

4

va_start을 사용하면 변수 인수가 시작되는 지점을 지정할 수 있습니다. 함수의 변수 인수 목록 attr 후 시작 이후

다음이 필요합니다.

va_start(args, attr); 
+0

감사합니다 당신의 제안하지만 여전히 작동하지 않습니다. 출력은 예전의 것과 변하지 않았습니다. –

+0

흠. 가상 머신을 가동하고 코드를 실행하면 기대했던 결과를 얻을 수있었습니다. 어떤 컴퓨터에서 코드를 컴파일합니까? –

+0

마이크로 컨트롤러 인 dsPIC33FJ128GP802에서 실행됩니다. –

관련 문제