C预处理跨平台
2024-08-29 04:50:12
#include <stdio.h>
//不同的平台下引入不同的头文件
#if _WIN32 //识别windows平台
#include <windows.h>
#elif __linux__ //识别linux平台
#include <unistd.h>
#endif
int main() {
//不同的平台下调用不同的函数
#if _WIN32 //识别windows平台
Sleep(5000);
#elif __linux__ //识别linux平台
sleep(5);
#endif
puts("hello world!");
return 0;
}
要开发一个C语言程序,让它暂停 5 秒以后再输出内容,并且要求跨平台,在 Windows 和 Linux 下都能运行
这个程序的难点在于,不同平台下的暂停函数和头文件都不一样:
Windows 平台下的暂停函数的原型是void Sleep(DWORD dwMilliseconds)
(注意 S 是大写的),参数的单位是“毫秒”,位于 <windows.h> 头文件。
Linux 平台下暂停函数的原型是unsigned int sleep (unsigned int seconds)
,参数的单位是“秒”,位于 <unistd.h> 头文件。
不同的平台下必须调用不同的函数,并引入不同的头文件,否则就会导致编译错误,因为 Windows 平台下没有 sleep() 函数,也没有 <unistd.h> 头文件,反之亦然。这就要求我们在编译之前,也就是预处理阶段来解决这个问题。
最新文章
- Delphi XE5-XE8 以上 如何发布文件到工程中
- ExpressQuantumGrid4的cxGrid的一些使用方法和经验
- NHibernate系列文章八:NHibernate对象一级缓存
- KMP算法中next函数的理解
- ps互补色
- Android 实现Path2.0中绚丽的的旋转菜单
- 选择排序O(n^2)与快速排序O(nlogn)的优越性代码体现
- linux打印彩色字
- css学习の第六弹—样式设置小技巧
- python文本操作—读、写
- wireshark基础学习—第二部分wireshark的基础操作
- SpringBoot 配置静态资源映射
- MapReduce-WordCount
- 最详细最全的redis配置文件解释
- Java获取后台数据,动态生成多行多列复选框
- python基础易错题
- 微软通过.NET Native为Windows Store应用提速
- skopt学习之路1-函数介绍:dummy_minimize
- C#中动态调用DLL动态链接库
- 非IE图片上传预览
热门文章
- 异步编程CompletableFuture
- A100计算能力
- Yolov4性能分析(下)
- 硬件安全模块如何启用AUTOSAR
- 编译原理-NFA转化成DFA
- 重新整理 .net core 实践篇—————异常中间件[二十]
- 5.22考试总结(NOIP模拟1)
- 【Python报错】ValueError: If using all scalar values, you must pass an index
- HTTP首部字段详解
- Binding(三):资源和ValueConverter