-Wlong-long
gcc 경고의 이유는 무엇입니까? GCC의 man 페이지에서왜 gcc에 긴 시간 동안 경고가 표시됩니까?
가 :
내가 알고있는 것처럼-Wlong-long
Warn if long long type is used. This is enabled by either -Wpedantic or -Wtraditional in ISO C90 and C++98 modes. To inhibit the warning messages, use -Wno-long-long.
, long long
는 최소 64 비트로 할 필요가있다 (실제적으로 적어도 오늘날의 컴파일러로, 항상 64 비트). 이것은 ISO C90 또는 C++ 98의 경우가 아니 었습니까? 아니면 long long
을 사용하지 않는 다른 이유가 있습니까?
나는 int64_t
과 친구처럼 대해 <stdint.h>
유형을 알고 있지만, 일부 그리 오래된하지 컴파일러 (예 : VS2005, 푸른 언덕 ARM 3.5) <stdint.h>
을 제공하지 않습니다, 나는 long long
가 (적어도) 64 비트 것이라고 생각 최신 및 최신 툴 체인.
'stdint.h '가없는 컴파일러는 C99과 호환되지 않습니다. 즉,'long long '이 전혀없는 좋은 확률이 있다는 뜻입니다! (그들이 GCC의 구버전이 아닌 한) – zwol
주어진 설명에서 그것은 "stdint.h"가없는 90 년대 gcc -'long long'와 동일한 카테고리에있는 Patrick의 "not-so-old"컴파일러처럼 들린다. (except 90 년대 대부분의 시간 동안 우리는 C99가 아직 작성되지 않았다는 핑계와 함께 "일반"CPU가 64 비트 정수 레지스터를 갖지 못했다는 핑계를 보았 기 때문에 기본 C 유형 중 64 비트 정수가 부족했습니다 어떤 감각을 만들었습니다.) –
@ WumpusQ.Wumbley : C는 8 비트 프로세서에서 사용할 수 있도록 설계되었습니다 (1980 년 실제로 자주 사용됨). 4 단계로 긴 추가 작업을 수행해야하는 것은 다소 불쾌한 일 이었지만 16777215보다 크지 않은 수치가 알려 지더라도 단일 수량으로 작업 할 수있는 편의성은 3 단계가 아닌 4 단계를 사용하여 성능을 저하시키는 데 가치가있었습니다. 8 바이트 유형을 사용하는 것이 정당화 될 수있는 경우는 훨씬 적습니다. IMHO, 적절한 구제 방법은 적어도 독립적 인 구현을 위해 "긴"옵션 기능을 구현하는 것이 었습니다. – supercat