variadic 함수는 숫자 상수를 정확히 어떻게 처리합니까? 예 :Variadic 함수 및 상수
myfunc(5, 0, 1, 2, 3, 4);
기능은 다음과 같습니다 : 다음 코드를 고려 va_arg
로 단일 인수를 반복하기 위해,
void myfunc(int count, ...)
{
}
자, 예를 들어, 자신의 크기를 알 필요가 int
, short
, char
, float
등입니다. 그러나 위의 코드에서 사용한 것과 같은 수치 상수로 가정해야하는 크기는 무엇입니까?
시험은 단지 그들을 위해 int
가정하면 컴파일러는 이러한 상수는 또한 단일 char
또는 short
각으로 표현 될 수있다하더라도 int
로 밀어 보인다 있도록 잘 작동하는 것 같다 것으로 나타났습니다.
그럼에도 불구하고 나는 내가 보는 행동에 대한 설명을 찾고 있습니다. variadic 함수에 숫자 상수를 전달하기위한 C의 표준 유형은 무엇입니까? 이것은 명확하게 정의 되었습니까, 아니면 컴파일러에 종속적입니까? 32 비트와 64 비트 아키텍처간에 차이점이 있습니까?
감사합니다.
답변 해 주셔서 감사합니다. ! 나는 여기에 후속 조치를했다 : http : // stackoverflow.com/questions/40330749/why-does-my-variadic-function-work-both-int-and-long-long – Andreas