의 차이를 테스트 컴파일러 매크로이 두 프리미티브 사이의 평등을 검사하기 위해 추가 할 수 있으며, 컴파일하기 전에 동등한 경우 두 번째를 생략 할 수 있습니까?컴파일러 매크로 uint64_t와 부호 없음 long long int와
다른 유형의 문자 포인터를 반환하는 다른 함수가 있습니다.
char const* foo(long long int) { return "%lld"; }
그래서 종류가 사용하는 메모리 양을 확인하기 위해 부족한 것 같다 예를 들어,이를 추가하는 것은 signed
와 unsigned long long int
바이트의 같은 번호를 사용하더라도, 나에게 어떤 문제가 발생하지 않습니다. 다른 접근법은 무엇입니까?
SFINAE가있는 매크로가 필요 없습니다. – chris
형식에서 printf 지정자를 결정하기위한 몇 가지 표준 라이브러리 지원을 확인 했습니까? –
두 번째 오버로드의 반환 값을 다음과 같이 변경합니다. enable_if :: value, const typename char *> :: type; 이것은 @chris가 말하는 것입니다 –