Tôi đang chuyển mã từ Linux C sang Visual C ++ cho Windows.
Visual C ++ không biết #include <stdint.h>
vì vậy tôi đã nhận xét nó ra.
Sau này, tôi tìm thấy rất nhiều 'uint32_t': identifier not found
lỗi đó. Làm thế nào nó có thể được giải quyết?
Tôi đang chuyển mã từ Linux C sang Visual C ++ cho Windows.
Visual C ++ không biết #include <stdint.h>
vì vậy tôi đã nhận xét nó ra.
Sau này, tôi tìm thấy rất nhiều 'uint32_t': identifier not found
lỗi đó. Làm thế nào nó có thể được giải quyết?
uint32_t
kiểu số nguyên có độ rộng chính xác khác chỉ là một phần của C99 và C ++ 0x, vì vậy các trình biên dịch cũ hơn (như Visual C ++ 2008 trở về trước) không có chúng.
Câu trả lời:
Loại này được định nghĩa trong tiêu đề C <stdint.h>
là một phần của tiêu chuẩn C ++ 11 nhưng không phải là tiêu chuẩn trong C ++ 03. Theo trang Wikipedia trên tiêu đề , nó vẫn chưa xuất xưởng với Visual Studio cho đến VS2010.
Trong thời gian chờ đợi, bạn có thể giả mạo phiên bản tiêu đề của riêng mình bằng cách thêm typedef
s ánh xạ các loại số nguyên tùy chỉnh của Microsoft với các loại được mong đợi bởi C. Ví dụ:
typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
/* ... etc. ... */
Hi vọng điêu nay co ich!
__int32
.
u_int32_t
và uint32_t
không cùng loại; một cái có thêm một gạch dưới sau u
. Đó dường như là một vấn đề riêng biệt.
Tôi gặp lỗi tương tự và nó đã sửa nó bao gồm trong tệp sau
#include <stdint.h>
ở đầu tệp của bạn.
Tăng tốc . Config cung cấp các typedef này cho các bộ công cụ không cung cấp chúng nguyên bản. Các tài liệu cho các chức năng cụ thể này là ở đây: Chuẩn Integer loại
Có một triển khai có sẵn tại trang dự án msinttypes - "Dự án này lấp đầy sự thiếu vắng của stdint.h và inttypes.h trong Microsoft Visual Studio".
Tôi không có kinh nghiệm với việc triển khai này, nhưng tôi đã thấy nó được những người khác trên SO giới thiệu.
Trên Windows, tôi thường sử dụng các loại cửa sổ. Để sử dụng nó, bạn phải bao gồm <Windows.h>
.
Trong trường hợp này uint32_t là UINT32 hoặc chỉ là UINT.
Tất cả các định nghĩa về loại đều có ở đây: http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751%28v=vs.85%29.aspx
Tôi đã phải chạy dự án trong VS2010 và tôi không thể giới thiệu bất kỳ sửa đổi nào trong mã. Giải pháp của tôi là cài đặt vS2013 và trong VS2010 point VC ++ Directories-> includeDirectories to Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ include. Sau đó, dự án của tôi được biên dịch mà không có bất kỳ vấn đề nào.