Có tùy chọn cl.exe để kết xuất tất cả các macro được xác định trước (cùng với các giá trị đã xác định) hay không. Thứ gì đó như gcc -dM -E - </dev/null cho gcc.Microsoft C++ Macro được xác định trước
8
A
Trả lời
8
Thật không may, tôi không nghĩ rằng MSVC đã xây dựng cách để thực hiện việc này.
Tôi đã sử dụng chương trình sau đây để kết xuất các giá trị của các ký hiệu được xác định trước. Tôi nên phân bổ (bởi vì tôi biết tôi đã không nghĩ ra điều này), nhưng tôi không có ghi chú về nơi tôi đã nhận nó (cập nhật: có vẻ như tôi có thể nhận nó từ đây: http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/644c12ed-e3a7-4c5a-a73a-610fcc7913ca) ...
#define __STR2__(x) #x
#define __STR1__(x) __STR2__(x)
#define __PPOUT__(x) "#define " #x " " __STR1__(x)
#if defined(_ATL_VER)
#pragma message(__PPOUT__(_ATL_VER ))
#endif
#if defined(_CHAR_UNSIGNED )
#pragma message(__PPOUT__(_CHAR_UNSIGNED ))
#endif
#if defined(__CLR_VER )
#pragma message(__PPOUT__(__CLR_VER ))
#endif
#if defined(__cplusplus_cli )
#pragma message(__PPOUT__(__cplusplus_cli ))
#endif
#if defined(__COUNTER__ )
#pragma message(__PPOUT__(__COUNTER__ ))
#endif
#if defined(__cplusplus )
#pragma message(__PPOUT__(__cplusplus ))
#endif
#if defined(_CPPLIB_VER )
#pragma message(__PPOUT__(_CPPLIB_VER ))
#endif
#if defined(_CPPRTTI )
#pragma message(__PPOUT__(_CPPRTTI ))
#endif
#if defined(_CPPUNWIND )
#pragma message(__PPOUT__(_CPPUNWIND ))
#endif
#if defined(_DEBUG )
#pragma message(__PPOUT__(_DEBUG ))
#endif
#if defined(_DLL )
#pragma message(__PPOUT__(_DLL ))
#endif
#if defined(__FUNCDNAME__ )
#pragma message(__PPOUT__(__FUNCDNAME__ ))
#endif
#if defined(__FUNCSIG__ )
#pragma message(__PPOUT__(__FUNCSIG__ ))
#endif
#if defined(__FUNCTION__ )
#pragma message(__PPOUT__(__FUNCTION__ ))
#endif
#if defined(_INTEGRAL_MAX_BITS )
#pragma message(__PPOUT__(_INTEGRAL_MAX_BITS ))
#endif
#if defined(_M_ALPHA )
#pragma message(__PPOUT__(_M_ALPHA ))
#endif
#if defined(_M_CEE )
#pragma message(__PPOUT__(_M_CEE ))
#endif
#if defined(_M_CEE_PURE )
#pragma message(__PPOUT__(_M_CEE_PURE ))
#endif
#if defined(_M_CEE_SAFE )
#pragma message(__PPOUT__(_M_CEE_SAFE ))
#endif
#if defined(_M_IX86 )
#pragma message(__PPOUT__(_M_IX86 ))
#endif
#if defined(_M_IA64 )
#pragma message(__PPOUT__(_M_IA64 ))
#endif
#if defined(_M_IX86_FP )
#pragma message(__PPOUT__(_M_IX86_FP ))
#endif
#if defined(_M_MPPC )
#pragma message(__PPOUT__(_M_MPPC ))
#endif
#if defined(_M_MRX000 )
#pragma message(__PPOUT__(_M_MRX000 ))
#endif
#if defined(_M_PPC )
#pragma message(__PPOUT__(_M_PPC ))
#endif
#if defined(_M_X64 )
#pragma message(__PPOUT__(_M_X64 ))
#endif
#if defined(_MANAGED )
#pragma message(__PPOUT__(_MANAGED ))
#endif
#if defined(_MFC_VER )
#pragma message(__PPOUT__(_MFC_VER ))
#endif
#if defined(_MSC_BUILD )
#pragma message(__PPOUT__(_MSC_BUILD ))
#endif
#if defined(_MSC_EXTENSIONS )
#pragma message(__PPOUT__(_MSC_EXTENSIONS ))
#endif
#if defined(_MSC_FULL_VER )
#pragma message(__PPOUT__(_MSC_FULL_VER ))
#endif
#if defined(_MSC_VER )
#pragma message(__PPOUT__(_MSC_VER ))
#endif
#if defined(__MSVC_RUNTIME_CHECKS )
#pragma message(__PPOUT__(__MSVC_RUNTIME_CHECKS ))
#endif
#if defined(_MT )
#pragma message(__PPOUT__(_MT ))
#endif
#if defined(_NATIVE_WCHAR_T_DEFINED)
#pragma message(__PPOUT__(_NATIVE_WCHAR_T_DEFINED))
#endif
#if defined(_OPENMP )
#pragma message(__PPOUT__(_OPENMP ))
#endif
#if defined(_VC_NODEFAULTLIB )
#pragma message(__PPOUT__(_VC_NODEFAULTLIB ))
#endif
#if defined(_WCHAR_T_DEFINED )
#pragma message(__PPOUT__(_WCHAR_T_DEFINED ))
#endif
#if defined(_WIN32 )
#pragma message(__PPOUT__(_WIN32 ))
#endif
#if defined(_WIN64 )
#pragma message(__PPOUT__(_WIN64 ))
#endif
#if defined(_Wp64 )
#pragma message(__PPOUT__(_Wp64 ))
#endif
void main() {}
4
Tôi không thấy tùy chọn đó trong MSDN documentation, nhưng danh sách các macro được xác định trước cho Visual Studio 2008 và 2010 khả dụng.
Các vấn đề liên quan
- 1. MSVC's _M_X64 Xác định macro được xác định trước
- 2. Cách đặt macro được xác định trước trong Mã :: Blocks
- 3. Macro tiền xử lý C xác định Macro
- 4. Xác định lại macro mục tiêu-C
- 5. Macro C/# xác định thụt đầu dòng?
- 6. Macro DEBUG được xác định ở đâu?
- 7. C/C++ định nghĩa macro mát mẻ?
- 8. Macro gcc được xác định trước cho số phiên bản của trình biên dịch là gì?
- 9. Tôi có thể sử dụng macro được xác định trước nào để phát hiện tiếng kêu?
- 10. 'Macro được xác định bằng không' là gì?
- 11. Xác định macro tắt nội dung của macro
- 12. Tại sao có macro xác định _tmain?
- 13. Macro này xác định điều gì?
- 14. Macro tiền xử lý C nào đã được xác định trong gcc?
- 15. Xác định macro đọc của riêng tôi
- 16. Xác định bên ngoài Macro tiền xử lý trong GLSL
- 17. JSLint: đã được sử dụng trước khi được xác định
- 18. C struct không xác định phía trước khai
- 19. xác định macro bên trong định nghĩa struct
- 20. Làm thế nào để xác định một hàm trong C nếu nó chưa được xác định trước?
- 21. redefinition Macro trong C và C++
- 22. C tiền xử lý xác định tên hàm được tạo
- 23. C/C++ #define Macro bên trong macro?
- 24. Cách lấy khổ giấy được xác định trước bằng PaperKind
- 25. Delphi biến môi trường được xác định trước
- 26. Điều khiển SWT với các kiểu được xác định trước
- 27. Bazaar (bzr) Các vị trí được xác định trước
- 28. Gọi một hàm trước khi nó được xác định | PHP
- 29. Cách mở JFileChooser với kích thước được xác định trước
- 30. .NET DateTime không có kích thước được xác định trước
Giải pháp này đủ tốt cho tôi. Cảm ơn – Ganesh