방금 C에서 가변 함수를 발견했으며 일반 통지 typedef로 정의했습니다. 텍스트 문자열에 대한 포인터는 선택적으로 인수와 함께 전송 될 수 있습니다. 예를 들어 어디서나 모든 출력 문자열 조작을 원할 경우 일반적인 디버그 기능으로 유용합니다.variadic 함수에 대한 래퍼에서 선택적 인수를 중계합니다.
가능한 한 제 자신의 C 파일을 원하기 때문에 init 호출에 채워진 상위 코드에서 가능한 콜백에 대한 포인터를 포함하는 정적 변수가 있습니다. 더 높은 코드가 관심이 없다면 포인터가 null 일 수 있기 때문에 null이 아닌 경우 포인터를 통해서만 호출하는 로컬 래퍼를 사용합니다. 그러나 '...'로 표시되는이 퍼지 항목을 전달하는 방법을 알아 내고 인수 목록에서 '...'을 사용하여 함수를 호출하면 구문 오류가 발생합니다.
이 작업을 수행 할 수있는 방법이 있습니까? 아니면 더미 로컬 처리기가 있고 초기화 포인터가 null 콜백을 포인터로 설정해야합니까?
가변 기능을 가지고하는 것이 좋습니다. 한 두 가지 예를 들어 주시겠습니까? – glglgl
디버그를 예로 들어 보겠습니다. 대부분은 단일 텍스트 인'DebugMessage (특정 오류가 무엇이든간에) '이지만 일부 정보에서는 추가 정보를 추가 할 수 있습니다. 가장 간단한 것은 간단한 변수의 값입니다. 이제 printf를 사용하여 문자열 버퍼를 할당하고 다시 채우지 만, DebugMessage ("테스트 포인트 % d에서 실패; var1 = % d, var2 = % d", 23, a , b)'DebugMessage는 GUI 기반 데스크탑 PC (대화 상자 팝업)보다 임베디드 플랫폼 (직렬 출력)에서 다른 일을 할 가능성이 높기 때문에 상위 레벨에서 필요합니다. 더 명확 해? –
부분적으로 그렇습니다. 당신은 행복하게 variadic 함수를 만들 수 있습니다. 그러나 항상'va_list'를 취하고 다른 것들에 의해 호출되는 하나의 버전을 제공하는 것을 기억하십시오. 저자가 "잊어 버린"라이브러리가 있으며, 확장하는 것은 실제 PITA입니다. – glglgl