C/C++
JerryRenhao
这个作者很懒,什么都没留下…
展开
-
Google C++ Style Guide的总结和摘抄
Google C++ Style Guide的总结和摘抄 我阅读了两个比较成熟的规范Google C++ Style Guide(中文 英文)和白杨的C++编码规范和指导 主要参考Google,觉得白杨的编码规范写的太过死板和繁琐,不过变量的命名规范我很喜欢。推荐大家看英文原版,原版一直在更新。看规范时可以找一个代码来一起看一下,更有意思。参考代码:http://cod转载 2013-03-05 15:23:22 · 463 阅读 · 0 评论 -
#pragma pack(结构体对齐的具体含义) 和#pragma once与 #ifndef的区别
朋友帖了如下一段代码: #pragma pack(4) class TestB { public: int aa; char a; short b; char c; }; int nSize = sizeof(TestB); 这里nSize结果为12,在预料之中。 现在去掉第一个成员变量为如下代码:转载 2013-05-11 18:22:13 · 1228 阅读 · 0 评论 -
[转]string, char*, int类型转换
[转]string, char*, int类型转换以下是常用的几种类型互相之间的转换string 转 int..............................char* 转 int #include int atoi(const char *nptr); long atol(const char *nptr); long long atoll(转载 2013-05-15 11:50:56 · 638 阅读 · 0 评论 -
log文件系统相关知识
1. 宏的高级使用--##,__VA_ARGS__, __FILE__, __FUNCTION__等2. va_list转载 2013-09-21 21:25:49 · 655 阅读 · 0 评论 -
mv 和 rename的区别和Linux C实现
1. mv 和 rename的区别(1) rename可以批量重命名, 而mv一般单个重命名(2) mv命令可以处理源文件和目标文件在不同file system的情况[1], rename可能不行.(Don't forget that 'mv' does considerably more than 'rename()' when the source and target loc原创 2014-02-11 11:36:51 · 3980 阅读 · 0 评论 -
Linux下性能优化
1. poor man's profiler(1) 通过统计call stack的情况, 来判断程序的bottleneck, 方便高效, 并有一般profile所不能统计的信息. 文章 What can I use to profile C++ code in Linux? 极度推荐, 并给出了解释.(2) 文章 poor man's profiler 给出了具体的shell程序来统计原创 2014-03-26 15:26:04 · 615 阅读 · 0 评论 -
Makefile编写
1. -c flag says to generate the object file2. -o $@ says to put the output of the compilation in the file named on the left side of the : (冒号)3. the $ is the first item in the dependencies list原创 2013-11-19 16:28:27 · 797 阅读 · 0 评论 -
编程随感
1. 使用make_pair时,一定要确定其包括类型是否可以深拷贝.2. 结构体也是如此,虽然是值类型,若其中包含引用类型字段,想产生一个深复制版本,必须手动实现拷贝构造函数或重载赋值符号。3. 在用printf打印时要记得加\n, 否则不会立即刷新缓存立即输出, 倘若你程序有bug时就很难定位. cout用endl也是如此.原创 2013-03-26 17:41:43 · 651 阅读 · 0 评论 -
Linux下BLAS的使用
1. 安装ubuntu下通过apt-get安装2. 文档在具体使用的过程中, 发现使用Blas最难的地方是文档太老,太不全,所以通过搜集,发现了以下两个比较好的参考文档。(1) 可以先通过 BLAS-subroutines 了解整个BLAS的函数设计方式。(2) 具体参数可以参考Intel(R) Math Kernel Library Reference Manual原创 2014-04-02 17:24:18 · 2538 阅读 · 0 评论 -
Linux下用OCCI读取windows下的oracle数据库中文乱码解决
1. 环境oracle数据库 帧原创 2014-07-15 09:25:46 · 3099 阅读 · 0 评论 -
XML使用知识
1. 相关概念(1). ENCODING The Unicode character set can be encoded into bytes for storage or transmission in a variety of different ways, called "encodings".(2). SAXStream-oriented APIs accessible原创 2014-02-11 15:11:04 · 583 阅读 · 0 评论 -
浮点数float累加误差分析与解决
一. 浮点数IEEE 754表示方法原创 2014-08-15 19:43:48 · 9117 阅读 · 0 评论 -
Linux C :遍历输出指定目录下的所有文件, 及st_mode判断文件类型
在Linux下opendir()、readdir()和closedir()这三个函数主要用来遍历目录。在使用这三个函数前必须先包括以下两个头文件:#include #include opendir函数的原型为:DIR *opendir(const char *name);它返回一个DIR*类型,这就是一个句柄啦,你不用管它的内部结构是什么样的,只要知道这个句柄就是等转载 2013-03-18 17:23:40 · 3094 阅读 · 0 评论 -
静态库(Archive Libraries)和动态库(Shared Object)的基本知识
linux下编译,常会遇到后缀为:.o .so .a .la .ko等格式文件,尽管linux并不以扩展名作为识别文件格式的唯一依据,但规范约定还是有的,如下:.o 是目标对象文件,相当于windows中的.obj文件.a 为静态库,可以是一个或多个.o合在一起,用于静态连接.la 为libtool生成的共享库,其实是个配置文档。可以用$file *.la查看*.la文件,或用vi来查看。转载 2013-07-02 10:55:44 · 1639 阅读 · 0 评论 -
不可不知的C++隐藏规则
不可不知的C++隐藏规则在面向对象的开发过程中,经常出现类的继承,这里面出现的成员函数的重载(overload)、覆盖(override)与隐藏(hidden)很容易混淆。首先澄清这3个概念:重载相同的范围(在同一个类中)函数名字相同参数不同virtual 关键字可有可无覆盖(派生类函数覆盖基类函数)不同的范围(分别位于派生类与基类)转载 2013-03-18 15:10:25 · 616 阅读 · 0 评论 -
结构体的浅复制和深复制
浅复制,指在创建一个对象或结构的副本时,对其值类型字段直接复制值,引用类型字段只复制引用(地址)。深复制,与浅复制不同的是,对引用类型字段,会创建新的引用,使用新的引用(地址)。 通常直接赋值操作是浅复制操作,若使用深复制,应该实现ICloneable操作,写Clone方法,利用Object.MemberwiseClone方法浅复制后,需要手动编写对其引用对象进行创建新的对转载 2013-03-26 16:58:16 · 965 阅读 · 0 评论 -
C++ STRING 和WSTRING 之间的互相转换函数
#include string>std::string ws2s(const std::wstring& ws){ std::string curLocale = setlocale(LC_ALL, NULL); // curLocale = "C"; setlocale(LC_ALL, "chs"); const wchar_t* _Sourc转载 2013-05-14 16:02:24 · 657 阅读 · 0 评论 -
linux C语言 计时
在linux中用C语言计时可以用很多方法。1. 如果是想使用秒级别的技术,可用使用C语言库自带的clock()进行计时。如: #include #include using namespace std; int main(){ clock_t start = clock(); //do some转载 2013-09-09 11:22:52 · 973 阅读 · 0 评论 -
网络编程的小知识点
1. #pragma pack(1) 结构体对齐,不填充2. socket传输数据时一定要先建立连接3. 网络编程:很强调数据包共用(union)4. 网络编程时会涉及到机器数据排列和网络传输数据排列的转化:htonl...5.一台服务器为什么可以有两个不同的监听程序?因为可以用两个不同的端口port,选择非常用端口原创 2013-05-12 13:41:09 · 625 阅读 · 0 评论 -
C语言static变量和全局变量的使用
本篇文章主要根据不同使用场合,来分析三种在程序运行期间一直可以修改的变量1. static 局部变量 当只是某个.c源文件中的某个函数需要使用它时,它的生存期为整个源程序,但是其作用域仍与局部变量相同,只能在定义该变量的函数内使用该变量.2. static全局变量 当某个.c源文件中所有函数都使用这个变量时, 它的生存期为整个源程序,其作用域也是,且原创 2013-12-13 19:49:38 · 969 阅读 · 0 评论 -
重载赋值运算符(operator =)及swap
1.>2. 在operator =中处理“自我赋值”, 及重载赋值运算符时要尽量考虑传递的参数是自身对象3.>使用swap操作不会删除原始数据和申请新空间, 且迭代器不会失效(类似与只交换两者读取数据的指针)(2)范型算法的swap:>String& operator=(String rhs) // yes, pass-by-value { swap(rhs); r原创 2013-12-25 21:55:23 · 1454 阅读 · 0 评论 -
c字符数组初始化方式和字符串常量
#include #include int main() { char ar0[] = {'n','a','m','e','i','s','l'}; //初始化字符数组方式1 char ar1[] ="nameisl"; //初始化字符数组方式2.这里是一个初始化列表,不是字符串常量,以后可以修改其值 char *ar2 = "NAMEISL"; //字符串常量.A转载 2013-07-10 17:26:27 · 986 阅读 · 0 评论 -
多线程编程和进程知识
1. POSIX thread (pthread) libraries2. linux中的C里面使用pthread_mutex_t锁原创 2013-09-17 11:39:01 · 640 阅读 · 0 评论 -
GPUSURF问题解决记录
1. CUDPP中的CUDA_CHECK_ERROR,是一种异步方式,所以真正错误的地方可能在CUDA_CHECK_ERROR,可以通过加多个CUDA_CHECK_ERROR来定位。如:CUDAPP error 所说2. 函数cudaError_t cudaGetSymbolAddress ( void** devPtr, const void* symbol )由于cuda版本升级问题原创 2013-09-10 21:45:27 · 1252 阅读 · 0 评论