C++
文章平均质量分 63
langlang2671
这个作者很懒,什么都没留下…
展开
-
#ifdef 标识符
条件编译一般情况下,源程序中的所有的行都参加编译。但是有时希望对其中一部分内容只在一定条件下进行编译,当条件不满足则编译另一组语句#ifdef 标识符 程序段1#else 程序段2#endif作用:已经被#define命令定义过,则在程序编译阶段只编译程序段1,否则编译程序段2例子:#define N 10 main() { #转载 2012-05-31 16:24:04 · 1068 阅读 · 0 评论 -
C语言结构体对齐问题详解
测试环境32位机 WinXP:编译器VC6(MS cl.exe ) 和 mingw32-gcc-4.5.2 1 结构体数据对齐(没有#pragma pack()宏定义)结构体对齐可以总结为三个基本原则①数据成员对齐规则:结构体的数据成员中,第一个成员从offset为0的地址开始,以后每一个成员存储的起始位置为该成员大小的整数倍(在win32中int为转载 2013-06-03 18:42:15 · 1009 阅读 · 0 评论 -
数据类型 --uint32_t / uint64_t
转载自:http://blog.sina.com.cn/s/blog_6aea878e0100tl0f.html体会[2006-10-25]:1>. 在写程序时注意"无符号类型"的使用, 各种类型边界值的情况. 如: a> 当某个数据不可能为负数时我们一定要考虑用以下类型: unsigned char, unsigned int, uint32_t, s转载 2013-01-26 12:15:37 · 987 阅读 · 0 评论 -
关于uint32_t uint8_t uint64_t 的问题
怎么又是u又是_t的?u代表的是unsigned相信大家都知道,那么_t又是什么呢?我认为它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是其它数据类型。uint8_t,uint16_t,uint32_t等都不是什么新的数据类型,它们只是使用typedef给类型起的别名。不过,不要小看了typedef,它对于你代码的维护会有很好的作用。转载 2012-12-27 17:40:03 · 4172 阅读 · 0 评论 -
hash_map中string为key的解决方法
当hash_map中使用string为key时,需用户扩展命名空间,否则报错如下:/usr/lib/gcc/x86_64-redhat-linux/3.4.5/../../../../include/c++/3.4.5/ext/hashtable.h:518: error: no match for call to `(const __gnu_cxx::hash) (const std::ba原创 2012-12-13 14:43:23 · 9822 阅读 · 0 评论 -
hash_map 详解
为什么需要hash_map 用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华山派掌门人,人称君子剑 张三丰-武当掌门人,太极拳创始人 东方不败-第一高手,葵花宝典 ... 这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的转载 2012-12-12 17:11:45 · 1345 阅读 · 0 评论 -
Makefile之wildcard
1、wildcard : 扩展通配符2、notdir : 去除路径3、patsubst :替换通配符例子:建立一个测试目录,在测试目录下建立一个名为sub的子目录$ mkdir test$ cd test$ mkdir sub在test下,建立a.c和b.c2个文件,在sub目录下,建立sa.c和sb.c2 个文件建立一个简单的Makefiles转载 2012-12-06 11:42:14 · 810 阅读 · 0 评论 -
L_BFGS(Limited-memory Broyden-Fletcher-Goldfarb-Shanno)
L_BFGS用于解决无约束最小化问题。minimize F(x), x = (x1, x2, ..., xN),当且仅当F(x)及其梯度函数G(x)被计算时成立。牛顿法要求计算目标函数的逆矩阵,计算拟矩阵时间开销很大,尤其是目标函数取值很多时。而L_BFGS方法通过计算最近m次迭代的逆矩阵的近似值找到一个最小值,实现时间空间上节省计算。L_BFGS的wiki解释:h原创 2012-07-06 12:39:36 · 3736 阅读 · 0 评论 -
undefined reference to `std::allocator<char>::~allocator()'
我在使用 gcc 对c++ 文件进行编译的时候 (命令是 "gcc HelloWorld -o HelloWorld" )报出了错误:undefined reference to `std::basic_string, std::allocator >::size() const'undefined reference to `std::basic_string, std::all转载 2012-06-12 15:53:55 · 14242 阅读 · 0 评论 -
编译时报错s_wsfe或e_wsfe等
编译时,报错如下:/home/eeee/Ipopt-3.5.4/lib/libipopt.a(ma27ad.o): In function`ma27od_':fort77-18890-1.c:(.text+0x45ac): undefined reference to `s_wsfe'fort77-18890-1.c:(.text+0x45ca): undefined reference原创 2012-06-12 16:49:40 · 11209 阅读 · 0 评论 -
Unix/Linux C静态库的使用
单独使用gcc的时候,不用考虑C_INCLUDE_PATH/CPLUS_INCLUDE_PATH/LIBRARY_PATH/LD_INCLUDE_PATH这些变量,但使用make的时候,就要显示地提供这些变量(如果必要)静态库的创建与操作:ar [drqtpmx] [options] archive.a object.o-d: 从静态库中删除文件objfile-r: 替换或插入转载 2012-06-08 14:35:57 · 805 阅读 · 0 评论 -
getenv
函数简介函数名: getenv 功 能: 从环境中取字符串,获取环境变量的值 头文件: stdlib.h 用 法:char *getenv(char *envvar); 函数说明:getenv()用来取得参数envvar环境变量的内容。参数envvar为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为envvar=value。getenv转载 2012-06-06 15:11:23 · 2568 阅读 · 0 评论 -
strtol
函数及其参数 long int strtol(const char *nptr,char **endptr,int base);函数的解释说明这个函数会将参数nptr字符串根据参数base来转换成长整型数。参数base范围从2至36,或0。参数base代表采的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。当base值为0时则是采用10进制做转换,转载 2012-06-06 11:52:28 · 919 阅读 · 1 评论 -
c++类的构造函数详解
c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++编程经验总结了一下c++中各种构造函数的特点,并附上例子,希望对初学者有所帮助。 c++类的构造函数详解 一、 构造函数是干什转载 2012-05-31 15:38:53 · 730 阅读 · 0 评论 -
C结构体之位域(位段)
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位转载 2013-06-03 18:42:51 · 904 阅读 · 0 评论