随笔分类 - C/C++
atan与atan2的区别
摘要:形状上下文的代码已经写成好久了,今天猛然发现这个ShapeContext直方图对任何形状都是分布在一、四区间的。这才意识到写错了。这个问题浪费了我接近半天的时间,直到单步才知道atan2的返回值有问题。原来atan2是不用你费心去判断区间的,其区别如下。还有个错误,是强制转换为整形时括号的位置不对!atan, atan2Calculates the arctangent ofx(atan) or the arctangent ofy/x(atan2).doubleatan(doublex);doubleatan2(doubley,doublex);RoutineRequired Header.
阅读全文
GSL科学计算库的使用
摘要:粒子滤波的代码中使用了GSL库,我从网上下载的gsl-1.11-windows-binaries.zip直接解压,类似OpenCV的配置方法,附加包含目录、附加库目录、附加依赖项,就能准确使用了。 代码中包含库的头文件时必须的:#include gsl/gsl_rng.h#include gsl/gsl_randist.h。 开头有这样几条语句:[代码]gsl_rng_set( rng, time(NULL) );也不知道是啥意思!!具体配置参考http://www.dakaren.com/index.php/archives/412.htmhttp://blog.csdn.net
阅读全文
qsort() 之 __cdecl
摘要:qsort( particles, n, sizeof( particle ), &cmp );这一行一直没能编译通过,报的错误是:error C2664: “qsort” : 不能将参数 4 从“int (const FILEINFO *,const FILEINFO *)”转换为“int (__cdecl *)(const void *,const void *)”还好能从网上找到答案,按照下面的格式定义cmp就可以在C++中运行了:int __cdecl cmp(const void* p1, const void* p2 ),还有说法是将cmp定义成static类型也是可以的,我没试。
阅读全文
[转]VC编程中经常能遇到LNK2005错误
摘要:昨天开始修改的程序,主要添加了OpenCV和GSL库,想把粒子滤波给实现了,出现很多没碰到过的错误!使用VC编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误。弄清楚它形成的原因,就可以轻松解决它了。出现LNK2005错误有多种原因:1.重复定义全局变量。2.头文件的包含重复。3.使用第三方的库造成的。这里只讨论使用第三方的库造成的原因的处理。如果在程序中同时使用了多个函数库,并且这些函数库中有些函数名称有冲突,就会引起LNK2005错误。微软提供了两套C运行期函数库,一种是普通的函数库:LIBC.LIB,不支持多线程。另外一种是支持多线程的:m
阅读全文
主函数main中变量(int argc,char *argv[])的含义
摘要:看过多个Linux下的软件的源代码,发现很多项目都有main(int argc,char *argv[]) ,在网上找到如下的说明。 我刚接触到这两个变量时,根本不知道它们是用来做什么的,我想很多人也跟我一样,刚看到这两个变量时也是稀里糊涂的。其实: int main(int argc,char *argv[]) 是 UNIX 和 Linux 中的标准写法,而 int main() 只是 UNIX 及 Linux 默许的用法..那究竟 argc,argv[] 有何之用呢?下面看个例子 edit.c 就会明白它们的用法了:#include#includeint main(int argc,cha
阅读全文
(转)C\C++关于string.h头文件和string类
摘要:1.C的字符串头文件是string.h,在C++里这个文件变成了cstring,string前面的c表示这个是c语言的;而C++的字符串头文件是string,是利用的模板实现的,跟原先C的实现方法不一样,但要安全得多。2.VC++中有string.h文件,它就是C中的那个;而cstring文件实际上只是在一个命名空间std中include了string.h,这是因为C++要减少名称污染;所以两个都是可以用的,但C++鼓励用cstring。string为字符串实现了一个类,而其实是依靠模板做的,这个可以先不考虑。使用类,可以将问题局部化,类似于把一个大问题分解成一
阅读全文
关于Makefile
摘要:makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。参见:http://www.chinaunix.net/jh/23/408225.htmlMakefile.am是一种比Makefile更高
阅读全文
浙公网安备 33010602011771号