만약 그렇다면 어떤 경우에, 무엇을, 언제, 어디서, 그것은 -Wformat 다르게합니까?
GCC에서 빌려온 것으로, 대체품으로 사용하기에 적합합니다. GCC's description :
-Wformat = 2
-Wformat 활성화 플러스 형식 검사 -Wformat에 포함되지. 현재 은 -Wformat -Wformat-nonliteral -Wformat-security -Wformat-y2k와 동일합니다.
대부분의 질문에 대한 답변입니다.
이것은 어떤 작업을 수행합니까?
예. 다음 프로그램 -Wformat=2
의 존재 (또는 부재)에 따라 다른 경고를 방출한다 :
__attribute__((__format__ (__printf__, 1, 2)))
static void F(const char* const pString, ...) {
}
int main(int argc, const char* argv[]) {
F("", 0);
F(argv[0], 0);
const char str[] = "aaa";
F(str, 0);
F("%i", 0);
F("%i");
return 0;
}
참고 : 연타 표시는 -Wformat
에 -Wformat-security
롤.
마지막으로, 나는 -Wformat-y2k
을 테스트하지했지만, 그것은으로 GCC에 의해 정의된다
-Wformat-Y2K -Wformat 지정하면, 또한은 strftime 형식에 대해
경고하는 단지 2 자리수의 해를 산출 할 수 있습니다.
'-Wformat-y2k'는 Clang에서 구현되지 않은 것으로 보입니다. 나는'% y '(세기의 세기) 변환 지정자를 사용하는 프로그램으로 시도했지만 아무런 불만이 없었다. 감사. –
@PeterHosey Great - 감사합니다. – justin