Đây là cả câu hỏi và tham chiếu và tôi hy vọng mọi người có thể xây dựng dựa trên điều này để những người có câu hỏi tương tự có thể sử dụng lại nó.Phát hiện phiên bản trình biên dịch trong thời gian biên dịch
Làm cách nào để chúng tôi có thể phát hiện một phiên bản trình biên dịch C/C++/ObjC một cách đáng tin cậy? Bây giờ tôi biết câu trả lời cho Visual Studio và một phần biết câu trả lời cho Xcode.
Bây giờ cho trình biên dịch Visual Studio chúng tôi có _MSC_VER được định nghĩa với các giá trị:
Version 1.0 800
Version 2.0 900
Version 2.x 900
Version 4.0 1000
Version 5.0 1100
Version 6.0 1200
Version 7.0 1300
Version 7.1 1310
Version 8.0 1400 (Visual Studio 2005)
Version 9.0 1500 (Visual Studio 2008)
Version 10.0 1600 (Visual Studio 2010)
Version 11.0 1700 (Visual Studio 2012)
Bây giờ cho trình biên dịch Xcode chúng tôi có điều này xác định:
__APPLE_CC__
Nhưng các giá trị duy nhất tôi đã quản lý để tìm thông qua google (tài liệu Mac dường như không có các giá trị này) là:
Xcode 3.0 5465
Xcode 3.1 5470
Xcode 3.1 (GCC 4.2) 5553
Xcode 3.2.3 5664 (Got this value from my own compiler)
Có thể một yone hoàn thành danh sách này hoặc cung cấp liên kết đến một danh sách đầy đủ? Và có lẽ chúng tôi cũng có thể cung cấp thông tin cho các trình biên dịch khác.
Cả Visual Studio lẫn Xcode đều là trình biên dịch - bạn không nên quan tâm đến phiên bản của chúng. – alternative
@mathepic Tôi giống như một gã khổng lồ, nhưng thực sự? VS đi kèm với một phiên bản cụ thể của trình biên dịch đầu vào cho mỗi phiên bản của IDE và cho thấy phiên bản đó thông qua _MSC_VER; đó là những gì anh ta muốn –
Hãy để tôi làm cho bản thân mình rõ ràng sau đó. Có, họ là cả hai IDE nhưng cả hai đều đóng gói với trình biên dịch riêng của họ, đó là những gì tôi đã nói về. Tôi hy vọng điều đó rõ ràng từ thông điệp của tôi. – Cthutu