2012 年二月 一 二 三 四 五 六 日 « 一 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 近期评论
- wlx [微博 ] 发表在《google彻底被封?》
- snake 发表在《google彻底被封?》
- Andrew Pelt 发表在《debian testing上安装oracle 10g》
- tiplip 发表在《webmap.cn使用的WEBGIS技术》
- 求助Evolution问题!! 发表在《evolution crashed in gutsy alpha》
分类目录
标签
anjuta apache backup breezy c++ compile convert dapper debian dns edgy evolution feisty firefox flash gnome gobang GRASS gutsy humor intrepid Linux mailman MapServer mysql openoffice Oracle php phpbb postfix PostGIS postgresql qgis sarge scim skype subversion svn tomcat ubuntu utf8 westdc Windows wordpress 中文
Tag Archives: c++
c++ compile error: discards qualifier
在调试matrix类的时候,遇到了这个错误。 参考这儿知道这个错误的原因了: discards qualifier 1. Example myfile.cpp: In function `int main()’: myfile.cpp:20: passing `const DayOfYear’ as `this’ argument of `void DayOfYear::Set(int, int)’ discards qualifiers 2. Meaning You have an inconsistency with the use of “const” 3. Usual Causes 1. A … Continue reading
C++的++重载
++重载主要要考虑到前增量和后增量的区别。 class A { int t; public: A& operator++(); //前缀 A operator ++(int); //后缀 } A& A::operator++() { ++t; return *this; } A A::operator++(int) { A a=*this; ++t; return a; }
(转)C++中二维数组new小结
二维数组new小结 转至水木清华 1. A (*ga)[n] = new A[m][n]; … delete []ga; 缺点:n必须是已知 优点:调用直观,连续储存,程序简洁(经过测试,析构函数能正确调用) 2. A** ga = new A*[m]; for(int i = 0; i < m; i++) ga[i] = new A[n]; ... for(int i = 0; i < m; i++) … Continue reading
编写多平台编译的C++代码
好东西,学习一下。 存一个到自己的BLOG。 使用C++编写软件的时候,经常需要同时在多个OS/Compiler平台上编译。在进行设计决策的时候,事先考虑到跨平台的需求,能够有效的减少后期的工作量。 在代码编写时,尽量避免使用OS/Compiler相关API或者语言扩展。这里有一些建议,比如,在做GUI时,不要使用MFC,否则在类 UNIX平台就要完全重写了。可以使用一个可移植的GUI工具,比如使用TCL/TK来编写界面或者使用一个可以在多个平台上使用的GUI库,著名的有 wxWindows。在需要使用线程或者同步原语的地方,可以使用一些多平台的库,比如使用boost中的线程,或者专用的多平台线程库,比如 ZThread。实在无法避免的,就使用编译开关#ifdef、#endif。另外,如果要支持的UNIX平台种类很多,还要注意,有些OS上的编译器对模版的支持不太好。 除了代码,还有一个很重要的是Makefile。在Windows上,如果使用VC,可以用工程文件,也可以使用VC的nmake编译 Makefile。在Unix上,编写大工程的支持工具有autoconf和automake。autoconf可以自动的生成configure脚本, configure脚本能够全面检测不同的OS和Compiler的特征,为编译C++代码提供了很大的方便。 生成configure,最重要的是configure.in和一组m4文件构成。不同的m4文件分别检测系统的不同特征,然后再 configure.in中指定使用那些m4;automake负责从用户编写的Makefile.am中生成Makefile.in文件。最后在编译时,使用经典的三个步骤; ./configure make make install 就可以编译所有的代码了。 一个要注意的问题,不同平台的make的语法可能不同,在solaris上臭名卓著的“Unexpect end of line seen”错误很难解决,推荐使用GNU make。 将autoconf、automake和daily build技术结合,能很好的发挥他们的作用。 如果对autoconf和automake工具没有信息,可以考虑一个新的Makefile生成工具。推荐CMake,它可以生成几乎所有平台的Makefile,甚至包括VC和Borland公司的make。 不论使用什么工具,编译多平台编译代码都是一个tedious、error prone的过程。 原文: http://www.blogbus.com/blogbus/blog/diary.php?diaryid=428246