面试题答案
一键面试以下是示例代码:
#include <iostream>
// 使用预定义宏检测当前系统
// Windows下一般定义了 _WIN32 或 _WIN64
// Linux下一般定义了 __linux__
#ifdef _WIN32
// Windows 系统下的代码
void platform_specific_function() {
std::cout << "This is Windows system." << std::endl;
}
#elif defined(__linux__)
// Linux 系统下的代码
void platform_specific_function() {
std::cout << "This is Linux system." << std::endl;
}
#else
// 其他系统下的默认代码
void platform_specific_function() {
std::cout << "Unsupported system." << std::endl;
}
#endif
int main() {
platform_specific_function();
return 0;
}
说明:
- 检测当前系统:在C++中,可以利用预定义宏来检测当前系统。在Windows系统下,一般会定义
_WIN32
(32位和64位通用)或_WIN64
(仅64位)。在Linux系统下,一般会定义__linux__
。通过#ifdef
或#if defined()
来判断这些宏是否被定义,从而决定编译哪部分代码。 - 条件编译:如上述代码,使用
#ifdef _WIN32
判断是否为Windows系统,如果是则编译Windows系统下的代码;通过#elif defined(__linux__)
判断是否为Linux系统,如果是则编译Linux系统下的代码;最后#else
部分是其他系统下的默认代码。#endif
用于结束条件编译块。