tôi muốn làm một cái gì đó như:Làm thế nào tôi có thể phát hiện g ++ và MinGW trong bộ tiền xử lý C++?
#ifdef GCC
#define GetFunctionName() string("My function name is ") + __PRETTY_FUNCTION__;
#endif
Vì tôi muốn sử dụng khá PRETTY_FUNCTION này chỉ được hỗ trợ bởi gnu như xa như tôi biết để tôi cần để phát hiện nếu tôi biên soạn cho g ++ và MinGW, Làm thế nào tôi có thể làm điều đó? Tôi đoán tất cả những gì tôi cần biết là các định nghĩa tiền xử lý của trình biên dịch, giống như tôi đã làm cho Microsoft bên dưới.
#ifdef WIN32
#define LogFuncBegin() gLogger.FuncBegin(__FUNCTION__);
#define LogFuncEndSuccess() gLogger.FuncEndSuccess(__FUNCTION__);
#endif
Tôi có thể phát hiện bộ xử lý trước g ++ và MinGW bằng C++ bằng cách nào?
Các trường hợp thử nghiệm của bạn có bao gồm MinGW-64 không? – jww
@jww Không, nhưng MinGW-64 cũng sẽ xác định macro 32, do đó, điều này sẽ làm việc cho điều đó là tốt. –
Một phiên bản cập nhật mới hơn của danh sách macro trình biên dịch đó là trong [Dự án biên dịch Macros được xác định trước tại sourceforge] (https://sourceforge.net/p/predef/wiki/Home/) – rakslice