Publié par admin dans
글쎄, 그건 정말 그게 전부입니다. 매우 정교한 것은 없지만 첫 번째 예제와 비교하여 더 깔끔하고 안전한 코드를 만듭니다. 아마도 다음 프로젝트에서 어떤 가치가있을 수 있습니다. 매크로 va_alist()는 아래 예제에서 error()라고 하는 함수에서와 같이 함수 정의의 매개 변수 목록으로 사용됩니다. ap형식 va_list와 이름이 가장 적합한 매개 변수인 매크로 va_start(ap, name)는 이름이 지정되지 않은 인수를 트래버스하고 액세스하려는 시도가 이루어지기 전에 호출해야 합니다. 원하는 모든 인수에 액세스한 경우 va_end(ap) 매크로를 호출해야 합니다. va_start()가 va_end() 후에 다시 호출되는 경우 ap의 인수 목록이 다시 트래버스될 수 있습니다. 아래 예제에서 error() 인수(arg1, arg2, …)는 인수 ap에서 vfprintf()로 전달됩니다. 소수점 정수 변환(i, d, u)의 경우 출력은 로캘의 대체 출력 숫자(있는 경우)를 사용합니다. 예를 들어 glibc 2.2.3 이후 페르시아어(« fa_IR ») 로캘에서 아랍어-인도어 자릿수를 지정합니다. 소수점 변환(i, d, u, f, F, g, G)의 경우 로캘 정보가 있는 경우 출력을 수천 개의 그룹화 문자로 그룹화해야 합니다. 많은 버전의 gcc(1)는 이 옵션을 구문 분석할 수 없으며 경고를 발행합니다.
SUSv2에는 %`F가 포함되지 않습니다. 스타일 e 또는 f를 가진 g 변환 스타일 변환을 위해 수행됩니다. 스타일 E 또는 F를 가진 G 변환 스타일 변환을 위해 수행됩니다. P가 0이 아닌 경우 정밀도를 같게 하고, 정밀도가 지정되지 않은 경우 6, 정밀도가 0인 경우 1을 동일하게 합니다. 그런 다음 스타일 E를 사용하여 변환에 X의 지수가 있는 경우: 정밀도는 소수점 문자 다음에 나타날 정확한 자릿수를 지정합니다. 기본 정밀도는 6입니다. 대체 구현에서 소수점 문자는 숫자를 따르지 않더라도 작성됩니다. 무한대 및 숫자가 아닌 변환 스타일은 메모를 참조하십시오. 숫자가 아님은 nan 또는 nan(char_sequence)으로 변환됩니다. 사용되는 것은 구현 정의입니다.
vprintf(), vfprintf(), vsprintf(), vsnprintf(및 vasprintf() 함수는 printf(), fprintf(), 스프린트프(), 스프린트프(), snprintf() 및 asprintf() 함수와 동일합니다. stdarg.h 헤더에 정의된 인수 목록과 함께 있습니다. printf(3C)를 참조하십시오. vprintf() 및 vfprintf(vfprintf() 함수는 스트림이 버퍼링되지 않거나 스트림의 버퍼를 플러시해야 하는 경우 실패합니다. 싱크대.