虽然都是C++,并且本人对windows API用的也比较少,常用的也就GetTickCount, atoi,sleep 几个函数,本以为自己可以轻松转身到linux环境下的开发。目前看来我错了,忽略了编译器以及编译调试的变化。
用惯了windows,也用惯了Visual Stdio,以前在windows环境下开发,VS提供的强大的辅助和调试功能使我编程的效率非常之高。可是,现在面对一个在linux运行的服务器,虽然还可以使用Visual Stdio做编译,但是仅仅是编写代码,无法编译,不能运行和调试,编写到的代码,需要在上传到linux服务器,然后配置makefile进行编译和链接。更要命的,只能用基于命令行的gdb来进行调试,我感觉我似乎回到了用记事本来编写代码的年代,对我这个工具优先的人来说,是一个巨大的打击。
痛定思痛,现在我需要好好学习和使用linux的编译和调试,越是不熟悉,越要多使用,初期犯的错误越多,以后的路走的就越顺。
不过,我现在还有一个计划,编写windows和linux下通用的代码,即可以在linux和windows下都可以编译通过的代码,通过以下的一些方式,应该可以达到目标。
通过操作系统环境标示宏__linux__和 WIN32宏,来实现条件编译,目标是在linux和windows下均可编译通过。
天龙八部的代码即是如此,运行在linux系统下,但是在Visual Stdio中也可以编译通过,不一定在Windows下运行,但这会带来调试和排错的好处(比只编译一个文件会好一 些)。
#ifdef WIN32 window环境标示宏
// 或者#if #if _MSC_VER >= 1300 // 使用VS编译器版本号来判断
#if def (__linux__) Linux环境标示宏
DEBUG,调试模式。 --仅对windows环境有效。