2016-07-31 5 views
1

Clion은 cannot resolve type __int128_t이라고 말하지만 어쨌든 컴파일됩니다.Clion은 __int128_t를 해석 할 수 없지만 컴파일러는 다르게 말합니다.

버그 인 경우,이를 우회하는 방법이 있습니까?

int main(int argc, char *argv[]) { 
    __int128_t test = 2333; 
    printf("%lld", test); 
    return 0; 
} 
+0

@Olaf OP가 Clion 내부의 컴파일러를 의미 했습니까? –

+0

@ machine_1 : "내부 CLION"컴파일러가 없습니다. 그것은 당신이 설치/구성한 것을 사용합니다. – Olaf

+0

내가 의미하는 바는, 내 프로그램을 컴파일하기 위해 clang을 사용했고, 작동하지만, Clion의 편집자 안에서, 나는 그 유형에 대해 나에게 빨간 선을 긋는다. – Alvar

답변

0

__int128_t은 C 표준에 정의 된 표준 유형이 아닙니다. 일부 컴파일러에서 지원하는 확장입니다. 컴파일러가 게시 된 코드를 컴파일 할 때 지원하는 것으로 보이지만 개발 환경에서이를 이해하지 못하고 포함 된 헤더에서 typedef을 찾지 못합니다. 컴파일러의 확장에 대한 환경을 이야기 할 수 일부 구성이있을 수 있습니다

... 코드에서 다른 문제가 있다는 것을

참고 :

  • 당신은 포함되어 있지 않습니다 <stdio.h>
  • 당신 형식 %lld의 경우 __int128_tprintf으로 전달하십시오. 이것이 옳다는 보장은 없습니다. printf이 올바르게 작동하려면 (long long)으로 인수를 캐스팅해야하지만 long long 유형은 __int128_t과 동일한 값 범위를 가지지 않을 수 있으므로 변환 후 test을 인쇄하면 시스템 특정 방식으로 값이 잘릴 수 있습니다. printf에 대해 __int128_t 유형의 값을 처리 할 수있는 확장 형식이있을 수 있습니다. 컴파일러/런타임 문서를 확인하십시오.
  • 형식 문자열 끝에 \n을 추가해야합니다. 일부 시스템에서는 마지막 줄 바꿈이없는 경우 출력을 플러시하지 않습니다.