
C/C++
lizhongkan
这个作者很懒,什么都没留下…
展开
-
把NDK集成到Eclipse
前言 最经在看Android方法的基础知识,看到一篇文章(http://www.rbgrn.net/content/348-get-your-eclipse-integrated-ndk-on)介绍如何把Android的NDK集成到Eclipse,顺便就把它翻译过来。 注:技术名称保留不译,比如CygwinEclipse(英文版)的界面文本不译,比如按钮翻译 2010-01-30 01:50:00 · 14763 阅读 · 12 评论 -
两个编程习惯
<br /> 今天把一些代码做出了一下两个调整(高雅些,叫做重构):<br /> <br />1、尽量添加const声明,比如容易忽略的是(1)局部变量的const声明;(2)method能够声明为const就做const声明。<br /> 针对(1),比如存在以下代码:<br /> String url = request.url();<br /> …… // 其它代码<br /> loader->load(url);<br /> <br /> 维护不久之后,一些人员做出原创 2011-03-08 22:45:00 · 558 阅读 · 0 评论 -
遇到的一个模板问题
<br /> 看下面的代码:<br />#include <iostream>using namespace std;template<typename T> struct Traits { static T emptyValue() { return T(); }};template<typename T> class Map : public Traits<T>{};class Base{};int main() { Map<Base*>原创 2011-03-08 00:58:00 · 598 阅读 · 0 评论 -
g++不支持enum的前置声明
<br />标准C++的规范并没有定义enum结构的大小。故即使在头文件对enum进行前置声明,在引用enum的时候,还是无法确定enum的大小,故无法对enum进行前置声明。<br /> <br />g++对标准的支持,也就有了这么一个限制。<br /> <br />例外的是,VC++对enum类型的大小进行了规定,为32位。故在VC++中,是支持对enum的前置声明的。原创 2010-12-02 23:58:00 · 3540 阅读 · 0 评论 -
隐藏实现的用处
隐藏实现,有时候被人称为“语法糖”,其实它还是有用处的!!!1. 隐藏实现的例子// A.hclass A{};// B.h#include "A.h"class B{private: int m_value; A m_a; // 这里,其实一般用指针,再在前面加个前置声明。但这里为了举例子,这么声明,有时候针对模板/第三方库的话,就得这么声明。};上面就是一般的声明,我们知道m_value, m_a是private,没必要暴露在头文件,这就有了隐藏实现的做法:// B.hclass BPriv原创 2010-12-02 23:07:00 · 670 阅读 · 0 评论 -
CxxTest的环境配置
最近,感触到单元测试对程序的构建非常有用。 Java的单元测试工具是JUnit。Python就自带有单元测试的库PyUnit。 C++的单元测试工具比较多,我选用了CxxTest,并集成到Visual C++ 2005。 简单地Mark一下: 1、从SourceForge上,下载一个CxxTest。 2、安装Python或者Perl。原创 2010-04-25 10:32:00 · 2611 阅读 · 0 评论 -
mutable and volatile
最近一直看到mutable这个关键字,也没有特别留意。印象中以为是多线程间访问的编译优化选项(其实是与volatile混了)。 今天要调试一个问题,是多线程的访问问题。 一个变量float data,一个线程A去读,一个线程B去写。可怎么调都发现线程A读出来的值都是不变的。 郁闷挺久后,想起mutable这个关键字,可将data声明为mutable flo原创 2010-01-14 21:36:00 · 909 阅读 · 0 评论 -
在无函数声明的情况下运行时动态调用DLL函数
原文出处:http://www.graphixer.com.cn/ShowWorks.asp?Type=1&ID=77 我们都知道DLL的调用方式有两种,即所谓动态调用和静态调用。静态调用就是告诉编译器我需要某个DLL,然后把要用的函数声明都定义出来,然后在运行时调用这些函数,这种用法和静态库的用法相似。动态调用就是运行时使用LoadLibrary将一个DLL载入到运行时环境,然后通转载 2010-03-02 20:14:00 · 3655 阅读 · 2 评论 -
测试运行时间
mark: #include #include using namespace std; int main() { time_t begin,end; begin=clock(); //这里加上你的代码 end=clock(); cout<<"runtime: "<<double(end-begin)/CLOCKS_PER_SEC<<endl;原创 2009-12-20 20:50:00 · 457 阅读 · 0 评论 -
详解link
有些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后,或许会有一些答案。 首先看看我们是如何写一个程序的。如果你在使用某种IDE(Visual Studio,Elic转载 2009-12-20 11:08:00 · 508 阅读 · 0 评论 -
调用构造函数
C++编译器是不允许通过指针直接调用构造函数的,但却允许调用析构函数。为什么呢?没细究。有这么个说法:好比一个人,你不能够自己构造自己,但却可以自杀。或许,得牵扯些编程哲学。 在自己实现的内存管理时,就要求我们能够调用构造函数。那怎么办? 其实,正确的做法是: 假设:obj是我们从内存管理分配得到的空间地址指针。此时,我们就想调用构造函数了,但编译器不允原创 2010-02-08 13:05:00 · 715 阅读 · 0 评论 -
通过C++类方法地址调用类的虚方法
1. 类的定义,编译成动态链接库。Canvas.h#ifndef CANVAS_H#define CANVAS_Hclass Canvas{public: Canvas(); virtual ~Canvas(); virtual v原创 2011-09-06 00:18:01 · 1122 阅读 · 0 评论