C++编程语言排行榜错误

C、C++编程新手错误语录_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C、C++编程新手错误语录
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩11页未读,
定制HR最喜欢的简历
你可能喜欢&&&&工程问题C++语言求解(原书第3版,以工程问题求解和C++编程语言...
自营订单满49元(含)免运费
不足金额订单收取运费5元起
邀请好友参加吧
版 次:1页 数:字 数:印刷时间:日开 本:16开纸 张:胶版纸包 装:平装是否套装:否国际标准书号ISBN:1丛书名:计算机科学丛书所属分类:&&&
下载免费当当读书APP
品味海量优质电子书,尊享优雅的阅读体验,只差手机下载一个当当读书APP
本商品暂无详情。
当当价:为商品的销售价,具体的成交价可能因会员使用优惠券、积分等发生变化,最终以订单结算页价格为准。
划线价:划线价格可能是图书封底定价、商品吊牌价、品牌专柜价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品曾经展示过的销售价等,由于地区、时间的差异化和市场行情波动,商品吊牌价、品牌专柜价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:折扣指在划线价(图书定价、商品吊牌价、品牌专柜价、厂商指导价等)某一价格基础上计算出的优惠比例或优惠金额。如有疑问,您可在购买前联系客服咨询。
异常问题:如您发现活动商品销售价或促销信息有异常,请立即联系我们补正,以便您能顺利购物。
当当购物客户端手机端1元秒
当当读书客户端万本电子书免费读《C++语言编程规范学习笔记》
《C++语言编程规范学习笔记》
1. 使用const常量取代宏
2. 一组相关的整型常量应定义为枚举
3. 不相关的常量,即使取值一样,也必须分别定义
4. 尽可能使用const
1. 禁止用memcpy、memset初始化非POD对象
2. 变量使用时才声明并初始化
3. 避免构造函数做复杂的初始化,可以使用“init”函数
4. 初始化列表要严格按照成员声明顺序来初始化它们
5. 明确有外部依赖关系的全局与静态对象的初始化顺序
类型转换:
1. 使用C++风格的类型转换,不要使用C风格的类型转换
2. 避免使用reinterpret_cast
3. 避免使用const_cast
4. 避免使用const_cast
5. 使用虚函数替换dynamic_cast
1. 内联函数(inline
function)小于10行
2. 使用内联函数代替函数宏
3. 内联函数应该放在头文件中声明,而且在函数前添加inline关键字
4. 内联函数的实现放在独立的文件
5. 入参尽量用const引用取代指针
6. 消除未使用函数参数
7. 尽量少用缺省参数
8. 尽量少用函数指针
1. 类职责单一
2. 隐藏信息
3. 尽量使类的接口正交、少而完备
4. 模块间对外接口类不要暴露私有和保护成员
5. 避免成员函数返回成员可写的引用或者指针
6. 禁止类之间循环依赖
7. 将数据成员设为私有的(struct除外),并提供相关存取函数
8. 使用PIMPL模式,确保私有成员真正不可见
构造、赋值和析构:
1. 包含成员变量的类,须定义构造函数或者默认构造函数
2. 为避免隐式转换,将单参数构造函数声明为explicit
3. 包含资源管理的类应自定义拷贝构造函数、赋值操作符和析构函数
4. 让operator=返回*this的引用
5. 在operator=中检查给自己赋值的情况
6. 在拷贝构造函数、赋值操作符中对所有数据成员赋值
7. 通过基类指针来执行删除操作时,基类的析构函数设为公有且虚拟的
8. 避免在构造函数和析构函数中调用虚函数
9. 拷贝构造函数和赋值操作符的参数定义成const引用类型
10. 在析构函数中集中释放资源
1. 用组合代替继承
2. 避免使用多重继承
3. 使用public继承而不是protected/private继承
对继承而言,努力做到"是...一个"的关系,否则使用组合代替。
4. 继承层次不超过4层
5. 虚函数绝不使用缺省参数值
6. 绝不重新定义继承而来的非虚函数
7. 避免派生类中定义与基类同名但参数类型不同的函数
8. 派生类重定义的虚函数也要声明virtual关键字
1. 尽量不重载操作符,保持重载操作符的自然语义
2. 仅在输入参数类型不同、功能相同时重载函数
3. 使用重载以避免隐式类型转换
4. C/C++混用时,避免重载接口函数
1. 使用名字空间进行归类,避免符号冲突
2. 不要在头文件中或者#include之前使用using指示符
3. 尽量少使用嵌套类
4. 尽可能不使用局部类
5. 使用静态成员函数或名字空间内的非成员函数,避免使用全局函数
6. 避免class类型的全局变量,尽量用单件模式
1. 谨慎使用模板,只使用模板的基础特性
2. 注意使用模板的代码膨胀
3. 模板类型应该使用引用或指针
4. 模板如果有约束条件,请在模板定义处显式说明
5. 两个模块之间接口中尽量不要暴露模板
1. 不要在extern
"C"内部使用#include包含其他头文件
2. 避免使用友元
3. 避免使用RTTI
4. 使用sizeof(变量)而不是sizeof(类型)
资源分配和释放:
1. 明确产品动态内存的申请与释放原则
2. 明确operator new的行为和检查策略
3. 释放内存后,要立即将指针设置为NULL,防止产生野指针
4. 单个对象释放使用delete,数组对象释放使用delete []
5. 释放结构(类)指针时,首先释放其成员指针的内存空间
6. 释放指针数组时,首先释放数组每个元素指针的内存
7. 不要返回局部对象指针
8. 不要强制关闭线程
9. 使用new, delete的封装方式来分配与释放内存
10. 避免在不同的模块中分配和释放内存
特性来帮助追踪动态分配
1. 减少不必要的异常
2. 构造和析构函数不能抛出异常
3. 通过传值的方式抛出,通过引用的方式捕获
4. 确保抛出的异常一定能被捕捉到
5. 确保异常发生后资源不泄漏
6. 独立编译模块或子系统的外部接口禁止抛异常
错误处理策略:
1. 建立合理的错误处理策略
2. 离错误最近的地方处理错误或转换错误
3. 错误发生时,至少确保符合基本保证;对于事务处理,至少符合强保证;对于原子操作,符合无错误保证
1. 避免使用auto_ptr
2. 仅将scoped_ptr、shared_ptr和unique_ptr用于管理单个对象
3. 如果涉及循环引用,使用weak_ptr解开循环
4. 使用make_shared代替new生成shared_ptr
5. 对于同一个对象一旦使用shared_ptr,后续就要处处使用shared_ptr
6. 对于返回自身的shared_ptr指针的对象,要从enable_shared_from_this类派生
7. 不要将使用不同版本stl、boost等模板库编译的模块连接在一起
8. 不要保存string::c_str()指针
9. 不要将stl、boost等模板库中的数据类型传递到动态链接库或者其它进程中
10. 使用容器时要评估大量插入删除是否会生成大量内存碎片
11. 使用string代替char*
12. 使用stl、boost等知名模板库提供的容器,而不要自己实现容器
13. 使用新的标准库头文件
程序效率(C++语言的性能优化指导):
1. 先测量再优化,避免不成熟的优化
2. 选用合适的算法和数据结构
3. 在构造函数中用初始化代替赋值
4. 当心空的构造函数或析构函数的开销
5. 对象参数尽量传递引用(优先)或指针而不是传值
6. 尽量减少临时对象
7. 优先采用前置自增/自减
8. 简单访问方法尽量采用内联函数
9. 要审视标准库的性能规格
10. 用对象池重载动态内存管理器
11. 注意大尺寸数组的初始化效率
12. 避免在函数内部的小块内存分配
1. 多线程、进程并行访问共享资源时,一定要加锁保护
2. 锁的职责单一
3. 锁范围尽量小,只锁对应资源操作代码
4. 避免嵌套加锁;如果必须加锁,务必保证不同地方的加锁顺序是一样的
5. 进程间通讯,使用自己保证互斥的数据库系统、共享内存,或socket消息机制;尽量避免使用文件等进程无法管理的资源
6. 可重入函数尽量只使用局部变量和函数参数,少用全局变量、静态变量
引申:一些库函数也是非线程安全,调用时可能会出现多线程并发访问问题。
7. 锁中避免调用函数;如果必须调用函数,务必保证不会造成死锁
其次,锁中调用函数,也会把对资源操作的代码扩大化,不利于并行效率。更主要的是,这种操作,由于加锁的范围变大,引起死锁的可能就增大。
8. 锁中避免使用跳转语句
1. 类命名以大写字母开头,中间单词也以大写开头
2. 类的声明按照一定的次序进行,关键字不缩进
3. 构造函数初始化列表在同一行或按4格缩进并排几行
4. 使用‘//’注释方式,而不是‘'
5. 为重要的类或结构体作注释,注释格式支持工具自动生成
6. 为所有重要的成员函数作注释
7. 正式发布的代码不能使用TODO 注释
8. 整个项目需要的公共头文件应放在一个单独的目录下
9. 一个模块的目录层次不宜太深,以1~2层为宜,接口文件放在最外层
10. 保持文件前言的简洁性
可移植性(兼容性):
1. 不直接使用C++的基本数据类型,不要假定其存储尺寸长度
2. 避免指针截断
3. 注意数据类型对齐问题
4. 在涉及网络字节序处理时,要注意进行网络字节序与本地字节序的转换
5. 避免无符号数与有符号数的转换
6. 创建64 位常量时使用LL 或ULL 作为后缀
7. 区分sizeof(void *)和sizeof(int)
8. 编译器,操作系统相关的代码独立出来
1. 使用正确的数据类型和类处理多语言字符和字符串
2. 对字符进行处理时,需分配足够的内存空间并确保字符完整
3. 使用标准库函数判断字符属性,使应用能够支持多区域
4. 对字符串进行本地化排序、比较和查找时使用有区域参数的locale::collate&&函数
5. 处理Unicode数据时,注意检测BOM是否存在,避免产生多余字符或解码错误
单一版本:
1. 资源与程序逻辑代码分离
2. 保持资源的语义完整性,不要拼接字符串资源
3. 资源的键名中包含该资源的应用场景信息
时区夏令时:
1. 确保本地时间中时区夏令时信息完整
2. 避免使用本地时间直接进行时间计算
业界编程规范和书籍:
1. 《google C++ code style》 (google C++编程指南)
2. 《C++编程规范101条规则、准则与最佳实践》
3. &Microsoft All-In-One Code
Framework《微软一站式示例代码库》
C++ primer
5. &effective C++ / more effective
Effective STL
inside the C++ object model
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。So I am building some Arduino code in eclipse, as described in , but every time I use an Arduino library, such as Serial, Eclipse underlines my function names, claiming they cannot be resolved.
However, the code actually compiles, so I'm kind of at a loss as to why Eclipse thinks the functions are missing.
If anyone has any idea on how to solve this problem it would be appreciated.
Thanks beforehand.
EDIT: I should have been more specific, Eclipse underlines the METHODS inside the Arduino libraries.
So if I use Serial.println("hello");, it underlines println() and claims it cannot be resolved.
Then it compiles just fine and the method works when uploaded to the arduino board.
EDIT2: I found my error, turns out I was trying to use some C++ functions in a C file, and eclipse didn' I renamed to .cpp and all )
Thanks for your help!
解决方案 For starters, what color is the underline? This makes a difference, as yellow means it's a warning, and red means it's an error (critical, will not build in most circumstances).
Second, you need to look at the "Problems" tab to see if there are actual errors. If there is nothing there, then it did indeed compile correctly.
Now, back to the original question. Depending on the type of project you are building, this type of behavior is not that uncommon. Eclipse seems to do a poor job of indexing certain projects. When you run "make all" from the command line (which is effectively what Eclipse does during build) it is likely resolving all of your code and building it just fine.
However, Eclipse uses a different, separate tool for indexing all of your source code and resolving variable/function definitions and declarations. This is literally a case of the left hand not knowing what the right hand is doing.
本文地址: &
所以我建立在Eclipse一些Arduino的code,为的,但我每次使用一个Arduino库,如串口时,Eclipse中强调我的函数名,声称他们不能得到解决。然而,code实际上编译,让我不知所措,为什么Eclipse的认为功能缺失是一种。如果任何人有关于如何解决这个问题的任何想法,这将是AP preciated。由于事前。 编辑:我本来应该更具体的是,Eclipse强调Arduino的库里面的方法。所以,如果我用 Serial.println(“你好”); ,它强调的println(),并声称它不能解决。然后,它编译就好了,当上传到Arduino板的方法工作。 EDIT2:我发现我的错误,原来我是想在C文件中使用一些C ++函数和Eclipse不喜欢它;我重命名为.CPP和所有的红色消失;!)感谢您的帮助。解决方案 对于初学者来说,什么颜色的下划线?这使得有差别,因为黄色意味着它是一个警告,红色表示这是一个错误(关键的,不会在大多数情况下建造)。其次,你需要看看“问题”选项卡,看看是否有实际的错误。如果什么都没有的话,那的确正确编译。现在,回到原来的问题。根据您正在建设的项目类型,这种类型的行为是不是罕见。月食似乎做索引某些项目做得不好。当您运行命令行“让所有”(这是构建过程中的Eclipse确实有效的)它可能解决所有的code和构建它就好了。不过,Eclipse使用一个不同,单独的工具作为索引所有源$ C $ C和解决变量/函数定义和声明。这是名副其实的左手不知道什么右手在做一个例子。
本文地址: &
扫一扫关注官方微信C++编程,编程以后一直被提示错误_百度知道
C++编程,编程以后一直被提示错误
#include&stdio.h&
#include &stdlib.h&
#include&time.h&
int main()
他一直说:‘4’within a switch statement...后面几个数字的也是,只有2没有提示错误。
我有更好的答案
4': breakswitch(c)后面缺花括号switch(c){case ':2'case &#39
采纳率:75%
来自团队:
每个case下需要一个break;
srand(time(0)); 要在rand()前使用
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 编程语言排行榜2018 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信