编写C语言跨平台函数(以清屏和休眠函数为例)

本文介绍了如何使用宏定义实现C语言的跨平台函数,包括清屏和休眠功能。在Windows下,清屏通过`system("cls")`实现,而在Linux下使用`system("clear")`。对于休眠函数,Windows使用`Sleep()`,Linux则使用`sleep()`或`usleep()`。文章还展示了如何通过宏连接符实现毫秒级别的休眠,并给出了一个结合清屏和休眠的掷骰子游戏示例。
摘要由CSDN通过智能技术生成

支持C语言的平台有许多,常见的编译器如VC、gcc、Clang等。不同的编译器共同点是都支持标准C(ANSI C),但是各自却又有自己独立的、平台相关的功能以及函数接口。这通常为程序的移植性带来很多问题。这里我简单谈一下解决方案。

常见思路

常见的解决跨平台移植的思路就是利用 宏。不同编译器有各自不同的宏,宏有很多,具体可以参考编译器的相关手册。通过判断一个宏是否存在来选择性的包含头文件或调用函数,其本质就是一种条件编译。
比如一些平台相关的函数,在不同平台要包含不同文件。

#if defined __GNUC__
#include <unistd.h>
#elif defined _MSC_VER
#include <windows.h>
#endif

#if defined 在本例中也可以用#ifdef 替换,但是如果是复杂的条件编译(比如if后面同时判断多个宏),就只能用#if defined 实现了。
__GNUC__是在gcc编译器中定义的宏,_MSC_VER是Windows中VC编译器中的宏。当然了你还可以选择这两个编译器中的其他宏来实现这一功能,只要能确保是两个编译器中平台相关的宏就行。
_MSC_VER这个宏还能判断VC的版本。比如:

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
...

它的意思是如果VC的版本大于VC 6.0,那么...
该宏的详细参考,很容易百度到:

  • MS VC++ 12.0 _MSC_VER = 1800 (Visual C++ 2013)
  • MS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

果冻虾仁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值