Przenoszę kod z Linux C na Visual C ++ dla Windows.
Visual C ++ tego nie wie, #include <stdint.h>
więc zakomentowałem to.
Później znalazłem wiele takich 'uint32_t': identifier not found
błędów. Jak można to rozwiązać?
Przenoszę kod z Linux C na Visual C ++ dla Windows.
Visual C ++ tego nie wie, #include <stdint.h>
więc zakomentowałem to.
Później znalazłem wiele takich 'uint32_t': identifier not found
błędów. Jak można to rozwiązać?
uint32_t
i inne typy liczb całkowitych o dokładnej szerokości są tylko częścią C99 i C ++ 0x, więc starsze kompilatory (takie jak Visual C ++ 2008 i wcześniejsze) ich nie mają.
Odpowiedzi:
Ten typ jest zdefiniowany w nagłówku C, <stdint.h>
który jest częścią standardu C ++ 11, ale nie jest standardem w C ++ 03. Zgodnie ze stroną Wikipedii w nagłówku , nie był on dostarczany z programem Visual Studio do VS2010.
W międzyczasie prawdopodobnie możesz sfałszować własną wersję nagłówka, dodając typedef
s, które mapują niestandardowe typy liczb całkowitych firmy Microsoft do typów oczekiwanych przez C. Na przykład:
typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
/* ... etc. ... */
Mam nadzieję że to pomoże!
__int32
.
u_int32_t
i uint32_t
nie są tego samego typu; po znaku u
. Wydaje się, że to osobny problem.
Mam ten sam błąd i naprawiłem go włączając w pliku następujący
#include <stdint.h>
na początku pliku.
Wzmocnij . Config oferuje te typy definicji dla zestawów narzędzi, które nie zapewniają ich natywnie. Dokumentacja dotycząca tej konkretnej funkcji jest dostępna tutaj: Standardowe typy liczb całkowitych
Na stronie projektu msinttypes dostępna jest implementacja - „Ten projekt wypełnia brak stdint.h i inttypes.h w Microsoft Visual Studio”.
Nie mam doświadczenia z tą implementacją, ale widziałem ją polecaną przez innych na SO.
W systemie Windows zwykle używam typów okien. Aby z niego skorzystać, musisz dołączyć <Windows.h>
.
W tym przypadku uint32_t to UINT32 lub po prostu UINT.
Wszystkie definicje typów są tutaj: http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751%28v=vs.85%29.aspx
Musiałem uruchomić projekt w VS2010 i nie mogłem wprowadzić żadnych modyfikacji w kodzie. Moim rozwiązaniem była instalacja vS2013, aw VS2010 punkt VC ++ Directories-> IncludeDirectories to Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ include. Wtedy mój projekt skompilował się bez żadnych problemów.