那些年蹚过的坑(c++)
1 main中的参数 尽量用英文双引号括起来,否则可能会出现字符串截断的情况(linux gcc 4.4 不加英文引号的话,遇到英文;会丢弃;后面的部分)
2 包含ipv6地址结构体(in6_addr)的头文件
In6addr.h; (Windows Vista and later)
Ws2tcpip.h (Windows Server 2003 and Windows XP)
3 偶然发现的一个特殊用法
在for循环里面有switch结构的时候,break; 是结束switch选择分支,而continue; 则是作用于for循环
for (int i = -1;i<10;++i)
{
switch (i)
{
case 1:
break;
default:
continue;
}
cout<<"i= "<<i<<endl;
}
4 在使用他人提供的动态链接库的时候, 对应的头文件一定要跟动态链接库的头文件完全一致, 否则哪怕只把一个函数变为虚函数, 也会导致在运行时产生莫名其妙的错误
5 mysql 某个用户的Host列为%时, 表示允许任意ip以该用户访问数据库, 但是不包括127.0.0.1. 如果非要这个用户既可以从127.0.0.1,也可以从其他ip访问, 那么应该添加两行记录, 一行写%, 另一行写127.0.0.1
6 inline声明不能用于静态库里面的函数,否则会在编译时找不到函数定义的错误
7 share_ptr 只有执行以下语句后才能指向NULL
boost::shared_ptr<myobject> client;
client.reset();
8 小bit有符号整数强制转成大bit无符号
<1>正确步骤: 先转成相同bit的无符号数, 再转成大bit无符号数
eg: std::int8_t aaa = 239;
std::uint16_t bbb = (std::uint16_t)(std::uint8_t)aaa; //此时bbb =239
<2>错误步骤: 直接一步强转
eg: std::int8_t aaa = 239(11101111);
std::uint16_t bbb = (std::uint16_t)aaa; //此时bbb =65519(11111111 11101111)
9 关于localtime函数
看网上的说法是返回值是一个类型为std::time的静态变量的指针
<1>linux.windows下, 多线程采用以下使用方式
tm *p = localtime(&timep);
时分秒变量的值某些时候也不正确, (┬_┬), 这个是之前输出小时之前没有加"std::setfill('0') << std::setw(2)" 导致时间早于10点时是一位,之后是两位,而审查的时候没有看仔细以为输出错了. 那现在在多线程环境下使用这个函数唯一的缺陷就是时间可能不是很准确
<2>解决办法:
windows下使用localtime_s, linux下使用localtime_r函数, 这两个函数有两个参数, 可以多线程调用而不出问题, 区别只是参数的顺序不一样
10 一些windows与linux功能相同, 函数名不同的函数
参考自: http://blog.csdn.net/tujiaw/article/details/7871547
windows: linux:
localtime_s localtime_r
inet_addr inet_pton
GetTickCount GetTickCount
Sleep毫秒 sleep秒
_mkdir mkdir
memset bzero
_fullpath realpath
11 vs2013专属坑
在vs2013 update5 中 禁止 _CRT_SECURE_NO_WARNINGS 警告方法, 目前只发现一种, 禁掉的方法很奇葩, 但是很有效.
下面简要说说禁用的方法, 工程中必须使用预编译同文件"stdafx.h", 并且在该文件的#pragma once行之前进行定义宏#define _CRT_SECURE_NO_WARNINGS才有效, 网上针对其他vs版本的方法对这段话开头的版本均无效!!!
12 一个类库缺失引发的血案
linux下, 调用第三方so的时候, 莫名提示加载异常
这个有可能是第三方so的依赖库缺失, 因为这种依赖库缺失, 有的时候会提示, 有的时候不会提示, 确认是否是这个问题的一个简单方法就是 "ldd 第三方so", 如果有提示 "not found" 那就是依赖库缺失, 然后装上对应的依赖库就行了
13 输出linux 下gcc的宏定义
gcc -posix -E -dM - </dev/null -->输出 c语言的宏定义
g++ -posix -E -dM - </dev/null -->输出c++语言的宏定义
那些年蹚过的坑(c++)的更多相关文章
- .NET项目发布到本地IIS完整流程(VS2015)
概要: 一.安装IIS功能 二.建立发布网站 三.发布应用程序 四.发布后各种问题的解决. [可先看概要四,可避免很多坑] 具体操作: 一.安装IIS功能 选择必要的功能进行安装,重启有效. 二.建立 ...
- pexpect 初坑
通过一个很坑的任务,最近认识了一个新坑: pexpect .其实基本的用法并不难,不过,我还是跟以前一样,把几个基本函数的坑蹚了个遍.有感而发,记录一下. 首先简单的介绍一下这个坑,哦不对,这个库.这 ...
- 小程序语音红包开发中 汉字转拼音的问题 微信小程序红包开发遇到的坑
公司最近在开发微信小程序的红包功能,语音红包需要用到文字转拼音的功能. 之前介绍过怎么将中文的汉字转为拼音的,具体看下面这篇文章. 微信语音红包小程序开发如何提高精准度 红包小程序语音识别精准度 微信 ...
- 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑
阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- Spark踩坑记——Spark Streaming+Kafka
[TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
- 踩石行动:ViewPager无限轮播的坑
2016-6-19 前言 View轮播效果在app中很常见,一想到左右滑动的效果就很容易想到使用ViewPager来实现.对于像我们常说的banner这样的效果,具备无限滑动的功能是可以用ViewPa ...
- 为C# as 类型转换及Assembly.LoadFrom埋坑!
背景: 不久前,我发布了一个调试工具:发布:.NET开发人员必备的可视化调试工具(你值的拥有) 效果是这样的: 之后,有小部分用户反映,工具用不了(没反应或有异常)~~~ 然后,建议小部分用户换个电脑 ...
随机推荐
- PAT (Advanced Level) Practise:1027. Colors in Mars
[题目链接] People in Mars represent the colors in their computers in a similar way as the Earth people. ...
- Hibernate 随记(数据库映射流程)
ORM:Object/Relationship Mapping 对象/关系映射 实现流程: 1.项目中导入Hibernate相关类包并创建配置文件.Hibernate.cfg.xml(可 ...
- MyBatis笔记
Mybatis:将java对象映射成SQL语句,再将结果转化为java对象,解决了java对象和sql拼接.结果集的问题,又可以自己写sql语句 总体结构: 根据JDBC规范建立与数据库的连接 通过反 ...
- 第六篇T语言实例开发,多点找色应用
---恢复内容开始--- 多点找色应用 文字,图形特征的获取 多点找色 功能原型 窗口多点找色(窗口句柄,x1,y1,x2,y2,颜色值,色点组,相似度,方向,返回x,返回y) 功能说明 根据指定的多 ...
- VS大视野
vs的本质:他是微软公司的员工一起开发的一个项目: 既然是项目:那么就是用编程语言编出来的! 用的是C# C#有他的特点:继承,封装,多态!等 我们在使用vs的时候,为什么可以使用很多的里面已经存在的 ...
- AFNetworking3.0 Https P12证书
最近服务器由原来的ice中间件改为https.方便了和服务器交互时不用自己aes加密了. -之前服务器人员和我(IOS)都没有使用过https,所以https跑不通很难说是服务器没有配置好还是IOS这 ...
- UVA 101
题意:四种操作把a和b所在的数字移动. lrj的思想很好.首先找到共同点.然后不必写四种操作.其次理解vector的方便. #include<iostream> #include<c ...
- Python3 之 import 和 当前目录
环境: Python-3.4.3 Web.py-0.37 安装 web.py 的时候,提示 ImportError: No module named 'utils' 看看源码,setup.py,有这么 ...
- 如何用java写出无副作用的代码
搞java的同学们可能对无副作用这个概念比较陌生,这是函数式编程中的一个概念,无副作用的意思就是: 一个函数(java里是方法)的多次调用中,只要输入参数的值相同,输出结果的值也必然相同,并且在这个函 ...
- OpenGL变换
概述 OpenGL变换矩阵 实例:GL_MODELVIEW矩阵 实例:GL_PROJECTION矩阵 概述 OpenGL管线中,在光栅化操作之前,包括顶点位置与法线向量的几何数据经顶点操作与图元装配操 ...