2011-07-13 14 views
18

Khi chúng tôi thêm cấu hình 64 bit từ dự án 32 bit đã tồn tại, Visual Studio sao chép cấu hình 32 bit theo mặc định. VS thậm chí các bản sao _WIN32
Tất cả các dự án 64bit của tôi cũng xác định _WIN32 ngay bây giờ, mặc dù chúng (64bit PE) không bao giờ có thể chạy trên Windows 32 bit. Nó rất khó chịu với tôi.Tôi có nên xác định cả _WIN32 và _WIN64 trong bản 64bit không?

Tôi muốn xóa _WIN32 nếu không có bất kỳ sự cố nào. Tôi không chắc về điều đó.
Có ổn không nếu tôi xóa định nghĩa _WIN32?

+0

OK? Không biết. Mục tiêu của bạn là gì? – Oded

+0

Bạn chỉ muốn biết nếu nó là OK để loại bỏ, nhưng bạn không cung cấp đủ chi tiết về nơi mà các ứng dụng được cho là để thực thi (nó sẽ được chạy trên 32bit? Có? Không?) Vấn đề gì sẽ loại bỏ giải quyết? – Oded

Trả lời

49

_WIN32 không có nghĩa là bạn nghĩ vậy. Nó có nghĩa là "Tôi đang sử dụng Windows API". 32 postfix đã được thêm trở lại trong những ngày của Windows NT 3.1 để làm cho nó khác biệt với API 16-bit đã được sử dụng trong phiên bản Windows 3. Thuật ngữ này đã rơi ra khỏi lợi vì vấn đề bitness. Bạn có thể thấy điều này tại stackoverflow.com, thẻ [win32] sẽ đưa bạn đến [winapi].

Không xóa nó, bạn đang sử dụng API Windows.

32

Các tài liệu cho predefined macros nói:

_WIN32: Defined cho các ứng dụng cho Win32 và Win64. Luôn được xác định.

_WIN64: Được xác định cho các ứng dụng cho Win64.

Vì vậy, không chỉ nên _WIN32luôn được xác định, nó không gây ra bất kỳ vấn đề trong các ứng dụng 64-bit. Do đó, tôi khuyên bạn không nên xóa nó.

+0

liên kết tốt. cảm ơn. – Benjamin

+0

Liên kết giúp. – sevenOfNine

5

Bạn không bao giờ nên xác định một trong số chúng.

Trình biên dịch sẽ xác định chúng là phù hợp.

2

_WIN32 : Được xác định cho các ứng dụng cho Win32 và Win64. Luôn được xác định.

_WIN64 : Được xác định cho các ứng dụng cho Win64.

Chi tiết khác: Predefined Macros. Để đơn giản, WIN32/_WIN32 được sử dụng để cho biết bạn đang sử dụng Windows (Đối với ứng dụng hệ thống chéo), trong khi _WIN64 được sử dụng để báo cho môi trường biên dịch là x86 hoặc x64.

Nếu bạn muốn biết ứng dụng của mình có đang chạy dưới Windows x64 hay không, bạn nên sử dụng API Windows IsWow64Process.

Các vấn đề liên quan