2 u013022149 u013022149 于 2015.07.17 12:18 提问

如何利用C/C++标准库编写跨平台的程序?

如题,最近公司给了个小任务,让在一个工程中找出符合某种条件的代码,并记录下行号。
听着好像比较简单,因为公司的项目在win,linux下有两个版本,所以小白同学比较装逼的想做一个跨平台的版本,然后,炸了。
思路好像还比较好找,因为是C++的项目,所以只要遍历某文件夹下的所有子文件以及子文件夹,找到.c或者.cpp文件,然后在其中寻找符合条件的语句连同行号写入文件中,可是,C/C++的标准库没有办法直接操作目录么?
找到各种解决方案都说目录是要跟随系统的,所以有不同系统的不同解决方案,可是,真的没有一个只用C/C++的版本,来实现这一功能么?
求大神指点迷津!

8个回答

save4me
save4me   Ds   Rxr 2015.07.17 14:25
已采纳
jack960330
jack960330   2015.07.20 09:53

不同操作系统的文件系统是不一样的,路径访问规则也是不一样的,如果说访问目录的函数,那可以说是跨平台,比如Qt 用条件编译实现的QDir ,但是楼主,路径部分还是得你自己写的,所以,不要怕麻烦。。
#ifdef
#elif
#else
#endif
这些条件编译并不难用

arronbnm
arronbnm   2015.07.17 12:18

不用#ifdef实现不了。

oyljerry
oyljerry   Ds   Rxr 2015.07.17 13:28

这个属于文件系统的操作,一般都是跟OS API相关的。

不过你的需求,可以用boost的filesystem,它已经帮你封装好了,其实也是#ifdef等来根据不同的操作系统分别处理的。

91program
91program   Ds   Rxr 2015.07.17 14:18

目录是要跟随系统的,且系统结构不同系统是不相同的,所以需要区分系统处理。
这个真没有办法做到一套代码。

save4me
save4me   Ds   Rxr 2015.07.17 14:30
Arnold9009
Arnold9009   2015.07.17 18:16

只能用条件编译,不同系统用不同分支的代码

zuishikonghuan
zuishikonghuan   2015.07.17 22:31

只能不同的版本不同的代码,可以用条件编译

Csdn user default icon
上传中...
上传图片
插入图片