CPP实用预定义宏

⌚Time: 2025-06-20 19:30:00

👨‍💻Author: Jack Ge

来自Deepseek AI的回答:

C++ 中的实用预定义宏

C++ 编译器提供了一系列预定义宏,这些宏在开发过程中非常有用。以下是一些最实用的预定义宏:

1. 标准预定义宏

编译信息相关

语言标准相关

2. 编译器识别宏

编译器标识

平台相关

3. 功能测试宏

C++11/14/17/20 特性测试

4. 实用示例

#include <iostream>

void printCompilerInfo() {
    std::cout << "编译信息:\n";
    std::cout << "日期: " << __DATE__ << "\n";
    std::cout << "时间: " << __TIME__ << "\n";
    std::cout << "文件: " << __FILE__ << "\n";
    std::cout << "行号: " << __LINE__ << "\n";
    std::cout << "函数: " << __func__ << "\n";
    std::cout << "C++标准: " << __cplusplus << "\n";
    
    #ifdef __GNUC__
    std::cout << "GCC版本: " << __GNUC__ << "." 
              << __GNUC_MINOR__ << "." 
              << __GNUC_PATCHLEVEL__ << "\n";
    #endif
    
    #ifdef __clang__
    std::cout << "Clang编译器\n";
    #endif
    
    #ifdef _MSC_VER
    std::cout << "MSVC版本: " << _MSC_VER << "\n";
    #endif
}

int main() {
    printCompilerInfo();
    return 0;
}

5. 实用技巧

  1. 调试信息:
#define DEBUG_LOG(msg) \
    std::cerr << "[" << __FILE__ << ":" << __LINE__ << "] " << msg << std::endl
  1. 平台特定代码:
#ifdef _WIN32
// Windows 特定代码
#elif defined(__linux__)
// Linux 特定代码
#elif defined(__APPLE__)
// macOS 特定代码
#endif
  1. 特性检测:
#if __cplusplus >= 201703L
// C++17 或更高版本的代码
#endif

这些预定义宏在跨平台开发、调试、日志记录和条件编译中非常有用,可以帮助你编写更灵活、更健壮的代码。