C++ 的可移植性和跨平台开发[2]:语法
文章目录 ★小心 for 循环变量的作用域(不支持新标准) ★不要使用全局类对象,改用单键(标准未定义) ★保持 inline 函数尽量简单 ★不要依赖函数参数的求值顺序(标准未定义) ★慎用模板特化(不支持新标准) ★模板继承中,引用基类成员要小心(不支持新标准) ★慎用 RTTI(不支持新标准、标准未定义) ★慎用嵌套类(不支持新标准) ★不要定义参数类型相近的函数(标准未定义) ★不要依赖标准类型的字长(标准未定义) ★用枚举代替类的静态成员常量(不支持新标准) ★结尾 目前还有相当一部分开发人员在使用老式编译器干活,这些老式编译器可能对C++98支持不够。因此,当你的代码移植到这些老式的编译器上时,可能会碰到一些稀奇古怪的问题(包括编译出错和运行时错误)。下面这些注意事项有助于你绕过这些问题。 强调一下,后面提到的好几个条款都是通过回避C++的新语法来保证移植性。如果你用的是新式编译器,那么你可以不理会这些条款。★小心 for 循环变量的作用域(不支持新标准) 在 C++ 98 标准中,for 循环变量的作用域局限在循环体内。但某些老的编译器(例如Visual C++ 6...
C++ 的可移植性和跨平台开发[2]:语法
文章目录 ★小心 for 循环变量的作用域(不支持新标准) ★不要使用全局类对象,改用单键(标准未定义) ★保持 inline 函数尽量简单 ★不要依赖函数参数的求值顺序(标准未定义) ★慎用模板特化(不支持新标准) ★模板继承中,引用基类成员要小心(不支持新标准) ★慎用 RTTI(不支持新标准、标准未定义) ★慎用嵌套类(不支持新标准) ★不要定义参数类型相近的函数(标准未定义) ★不要依赖标准类型的字长(标准未定义) ★用枚举代替类的静态成员常量(不支持新标准) ★结尾 目前还有相当一部分开发人员在使用老式编译器干活,这些老式编译器可能对C++98支持不够。因此,当你的代码移植到这些老式的编译器上时,可能会碰到一些稀奇古怪的问题(包括编译出错和运行时错误)。下面这些注意事项有助于你绕过这些问题。 强调一下,后面提到的好几个条款都是通过回避C++的新语法来保证移植性。如果你用的是新式编译器,那么你可以不理会这些条款。★小心 for 循环变量的作用域(不支持新标准) 在 C++ 98 标准中,for 循环变量的作用域局限在循环体内。但某些老的编译器(例如Visual C++ 6...
如何成为优秀开发人员[4]:做正确的事
文章目录 ★一些不好的习惯 ★如何克服? 一般来说,优秀的开发人员往往具有较高的效率。俺这里提到的【效率】包括两方面:“做正确的事”和“正确地做事”。并且“做正确的事”比“正确地做事”更加重要。★一些不好的习惯 咱们先来看一些反面教材。据相关研究机构统计,大部分人(80%以上)具有如下【不好】的工作习惯:先做自己喜欢的事情,再做自己不喜欢的事情 先做紧急的事情,再做不紧急的事情 先做容易做的事情,再做不容易做的事情 先做自己了解、熟悉的事情,再做自己不了解、不熟悉的事情 先做有趣的事情,再做枯燥的事情 先做易于告一段落的事情,再做不易于告一段落的事情 先做自己熟悉的人托付的事情,再做自己不熟悉的人托付的事情★如何克服?◇评估权重 你仔细回想一下,自己是否有上述的坏毛病?(我相信大多数人都有)如果你有其中的几项的话,你平时会很容易被琐事纠缠,白白浪费不少时间,每天忙完了都不清楚忙些啥。那怎么改变这种局面捏?听我细细道来。 “做正确的事”的关键在于评估你准备做的每件事情的【权重】。权重来源于这件事情对于达成目标是否有帮助?帮助有多大? (咱们在本系列上一篇帖子《设定个人发展目标和计划...
如何成为优秀开发人员[4]:做正确的事
文章目录 ★一些不好的习惯 ★如何克服? 一般来说,优秀的开发人员往往具有较高的效率。俺这里提到的【效率】包括两方面:“做正确的事”和“正确地做事”。并且“做正确的事”比“正确地做事”更加重要。★一些不好的习惯 咱们先来看一些反面教材。据相关研究机构统计,大部分人(80%以上)具有如下【不好】的工作习惯:先做自己喜欢的事情,再做自己不喜欢的事情 先做紧急的事情,再做不紧急的事情 先做容易做的事情,再做不容易做的事情 先做自己了解、熟悉的事情,再做自己不了解、不熟悉的事情 先做有趣的事情,再做枯燥的事情 先做易于告一段落的事情,再做不易于告一段落的事情 先做自己熟悉的人托付的事情,再做自己不熟悉的人托付的事情★如何克服?◇评估权重 你仔细回想一下,自己是否有上述的坏毛病?(我相信大多数人都有)如果你有其中的几项的话,你平时会很容易被琐事纠缠,白白浪费不少时间,每天忙完了都不清楚忙些啥。那怎么改变这种局面捏?听我细细道来。 “做正确的事”的关键在于评估你准备做的每件事情的【权重】。权重来源于这件事情对于达成目标是否有帮助?帮助有多大? (咱们在本系列上一篇帖子《设定个人发展目标和计划...
C++ 的可移植性和跨平台开发[1]:编译器
文章目录 ★编译器的选择 ★编译警告 ★交叉编译器 在跨平台的开发过程中,很多问题都和编译器有关。因此我们先来聊聊编译器相关的问题。 ★编译器的选择 首先,GCC 是优先要考虑支持的,因为几乎所有操作系统平台都有 GCC 的实现。它基本上成了一个通用的编译器了。如果你的代码在 A 平台的 GCC 能够编译通过,之后拿到 B 平台用类似版本的 GCC 编译,一般也不会有太大问题。因此 GCC 是肯定要考虑支持的。 其次,要考虑是否支持本地编译器。所谓本地编译器就是操作系统厂商自产的编译器。 举例来说: 相对于 Windows 的本地编译器就是 Visual C++ 相对于 Solaris 的本地编译器就是 SUN 的 CC 如果你对性能比较敏感或者想用到某些本地编译器的高级功能,可能就得考虑在支持 GCC 的同时也支持本地编译器。 ★编译警告 编译器是程序员的朋友,很多潜在的问题(包括可移植性),编译器都是可以发现并给出警告的。如果你平时注意这些警告信息,可以减少很多麻烦。 因此俺强烈建议:把编译器的警告级别调高;【不要】轻易忽略编译器的警告信息。★交叉编译器 从没听说过“交叉编译...
C++ 的可移植性和跨平台开发[1]:编译器
文章目录 ★编译器的选择 ★编译警告 ★交叉编译器 在跨平台的开发过程中,很多问题都和编译器有关。因此我们先来聊聊编译器相关的问题。 ★编译器的选择 首先,GCC 是优先要考虑支持的,因为几乎所有操作系统平台都有 GCC 的实现。它基本上成了一个通用的编译器了。如果你的代码在 A 平台的 GCC 能够编译通过,之后拿到 B 平台用类似版本的 GCC 编译,一般也不会有太大问题。因此 GCC 是肯定要考虑支持的。 其次,要考虑是否支持本地编译器。所谓本地编译器就是操作系统厂商自产的编译器。 举例来说: 相对于 Windows 的本地编译器就是 Visual C++ 相对于 Solaris 的本地编译器就是 SUN 的 CC 如果你对性能比较敏感或者想用到某些本地编译器的高级功能,可能就得考虑在支持 GCC 的同时也支持本地编译器。 ★编译警告 编译器是程序员的朋友,很多潜在的问题(包括可移植性),编译器都是可以发现并给出警告的。如果你平时注意这些警告信息,可以减少很多麻烦。 因此俺强烈建议:把编译器的警告级别调高;【不要】轻易忽略编译器的警告信息。★交叉编译器 从没听说过“交叉编译...
C++ 的可移植性和跨平台开发[0]:概述
今天聊聊 C++ 的可移植性问题。如果你平时使用 C++ 进行开发,并且你对 C++ 的可移植性问题不是非常清楚,那么建议你看看这个系列。即使你目前没有跨平台开发的需要,了解可移植性方面的知识对你还是很有帮助的。 C++ 的可移植性这个话题很大,包括了编译器、操作系统、硬件体系等很多方面,每一个方面都有很多内容。鉴于本人能力、精力都有限,只能介绍每一个方面最容易碰到的问题,供大伙儿参考。 后面我会分别从编译器、C++ 语法、操作系统、第三方库、辅助工具、开发流程等方面进行介绍。 为了方便阅读,把本系列帖子的目录整理如下:编译器语法异常处理硬件体系操作系统多线程(未完待续)俺博客上,和本文相关的帖子(需翻墙): 《每周转载:IT 大牛谈编程语言(网文3篇)》 《如何成为优秀开发人员》(系列) 版权声明 本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:https://program-think.blogspot.com/2009/01/cxx-cross-platform-develop-0-overview.ht...
C++ 的可移植性和跨平台开发[0]:概述
今天聊聊 C++ 的可移植性问题。如果你平时使用 C++ 进行开发,并且你对 C++ 的可移植性问题不是非常清楚,那么建议你看看这个系列。即使你目前没有跨平台开发的需要,了解可移植性方面的知识对你还是很有帮助的。 C++ 的可移植性这个话题很大,包括了编译器、操作系统、硬件体系等很多方面,每一个方面都有很多内容。鉴于本人能力、精力都有限,只能介绍每一个方面最容易碰到的问题,供大伙儿参考。 后面我会分别从编译器、C++ 语法、操作系统、第三方库、辅助工具、开发流程等方面进行介绍。 为了方便阅读,把本系列帖子的目录整理如下:编译器语法异常处理硬件体系操作系统多线程(未完待续)俺博客上,和本文相关的帖子(需翻墙): 《每周转载:IT 大牛谈编程语言(网文3篇)》 《如何成为优秀开发人员》(系列) 版权声明 本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:https://program-think.blogspot.com/2009/01/cxx-cross-platform-develop-0-overview.ht...
从 Twitter 的突发新闻报道看草根记者的崛起
在几天前的“纽约客机哈德森河成功迫降”事件中,Twitter 又一次拔得头筹(为什么说“又”捏?因为之前的孟买恐怖袭击,Twitter 已经抢先传统媒体了)。在率先到达出事地点的救生艇上,贾尼斯·克鲁姆斯同学(Janis Krums)用自己的 iPhone 手机拍摄了照片并上传到 Twitter,成为了飞机迫降后的首张现场照片。 最近已经有好几次突发事件是由 Twitter 抢先报道,草根记者大有后来居上的势头。这主要得益于可拍照、可上网手机的普及和 SNS(社会化网络)的流行,使得大伙儿都可以成为爆料的记者。这方面的优势,传统媒体是很难超越的(毕竟电视台、报社、杂志的人手有限)。从目前的发展趋势看,将来传统媒体的优势将被局限在报道的【全面性】和【深入性】等方面,而不得不放弃“实时性”的优势。 版权声明 本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址: https://program-think.blogspot.com/2009/01/twitter-and-break-news-and-people.htm...
从 Twitter 的突发新闻报道看草根记者的崛起
在几天前的“纽约客机哈德森河成功迫降”事件中,Twitter 又一次拔得头筹(为什么说“又”捏?因为之前的孟买恐怖袭击,Twitter 已经抢先传统媒体了)。在率先到达出事地点的救生艇上,贾尼斯·克鲁姆斯同学(Janis Krums)用自己的 iPhone 手机拍摄了照片并上传到 Twitter,成为了飞机迫降后的首张现场照片。 最近已经有好几次突发事件是由 Twitter 抢先报道,草根记者大有后来居上的势头。这主要得益于可拍照、可上网手机的普及和 SNS(社会化网络)的流行,使得大伙儿都可以成为爆料的记者。这方面的优势,传统媒体是很难超越的(毕竟电视台、报社、杂志的人手有限)。从目前的发展趋势看,将来传统媒体的优势将被局限在报道的【全面性】和【深入性】等方面,而不得不放弃“实时性”的优势。 版权声明 本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址: https://program-think.blogspot.com/2009/01/twitter-and-break-news-and-people.htm...