2009-12-14 14 views
2

일부 VC++ 6.0 소스 코드를 컴파일하는 동안이 오류가 발생합니다.vC++ 6.0에서 long long int 컴파일 오류가 발생했습니다.

error C2632: 'long' followed by 'long' is illegal 

오류를 일으킨 long long int 변수를 선언하는 코드 부분이 있습니다. 아무도 내가 VC 6.0에서 컴파일하는이 오류를 해결할 수있는 방법을 알고 있습니까? 검색 한 적이 있는데이 데이터 유형은 아직이 버전에서 지원되지 않는다고 읽었습니다. 그러나 이것은 오래된 코드이며 VC++ 6.0에서 컴파일 된 것입니다.

답변

5

AFAIK Visual C++ 6.0은 __int64 (Microsoft의 64 비트 정수 형식 정의) 만 지원합니다. long long은 6.0에서 지원하지 않는 C99의 표준 유형입니다.

1

VC6은 긴 long 데이터 형식을 지원하지 않는다고 생각하지만, 필요한 typedef가 이미 있다면 "long long"을 "__int64"로 대체 할 수 있습니다.

0

오류 C2632 : '긴'이 '긴'다음은 마이크로 소프트가 마침내 Visual Studio 2013에서 long longunsigned long long에 대한 지원이 추가

불법입니다.

Which C99 features are available in the MS Visual Studio compiler?도 참조하십시오.


아무도 내가 VC++ 6.0에서 컴파일이 오류를 해결할 수있는 방법을 알고 있나요?

초기 .Net 컴파일러에도 문제가 있습니다. 휴대용 방식으로 매크로 및 Microsoft 확장을 사용해야합니다.

여기 Crypto++ handles it가 (프로젝트가 여전히 원치 않는 선택을하는 사용자를 강제 피하기 위해 오래된 컴파일러를 지원) 방법은 다음과 같습니다

#if defined(_MSC_VER) || defined(__BORLANDC__) 
    typedef unsigned __int64 word64; 
    #define W64LIT(x) x##ui64 
#else 
    typedef unsigned long long word64; 
    #define W64LIT(x) x##ULL 
#endif 

그런 다음 use it like so 것. 그것은 VC++/6.0 5.0, 비주얼 스튜디오 닷넷, 비주얼 스튜디오 2010, GCC는, 그들은 실제로 적어도 VS2010 이후`긴 long`했다

word64 x = W64LIT(0x0000000000000001); 
+0

등 연타, 인텔,의에 따르면없는 2013 년을 위해 일한다 MSDN, 그것을 가지고 가장 빠른 버전은 실제로 VS 2005,'__int64'와 동등한 것으로 나열되었습니다. _Might_는 VS.NET 2003에 있었지만 보관 된 문서는 모순됩니다. [Here] (https://msdn.microsoft.com/en-ca/library/cc953fe1(v=vs.71) .aspx), 차트 1에는 언급되어 있지 않지만 차트 2는 나와 있습니다. –

관련 문제