MST

星途 面试题库

面试题:C语言条件编译在跨平台开发中的应用

假设你要开发一个跨Windows和Linux平台的C程序,在Windows下需要使用Windows特有的API函数`MessageBox`,在Linux下需要使用`printf`实现类似功能。请利用条件编译指令,编写一个能够在不同平台下正确运行的代码框架,并简要说明如何通过设置宏来区分不同平台。
20.2万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>
#ifdef _WIN32
#include <windows.h>
#endif

void show_message(const char* message) {
#ifdef _WIN32
    MessageBox(NULL, message, "Message", MB_OK);
#else
    printf("%s\n", message);
#endif
}

在上述代码中,通过条件编译指令 #ifdef 来区分不同平台。在Windows平台下,编译器会识别 _WIN32 这个预定义宏,从而编译 MessageBox 相关代码;在Linux平台下,由于没有定义 _WIN32,会编译 printf 相关代码。如果在自定义的构建环境中,也可以手动定义宏来区分平台,例如使用 gcc -D _WIN32 来模拟Windows平台编译,不添加 -D _WIN32 则默认按Linux平台逻辑编译。