- 博客(41)
- 资源 (2)
- 收藏
- 关注
原创 基于 Distcc 的android分布式编译环境的搭建
关于Ditscc分布式编译环境的搭建,网上也有不少文章,但是基本上都过时了。所以看了很多文章,走了不少弯路,最后总算梳理清楚了一条正确的环境搭建的步骤,而且可以实现zeroconf。本文不涉及负载均衡的实现。本文所述环境的搭建是基于Ubuntu 12.04 64bit,android版本是4.1(其他版本估计也一样)。an
2014-04-11 11:03:07
9117
1
转载 Android.mk for your own module
这里我们向Android中添加自己的模块,只涉及到.so/*.a/elf source的编译,以及如何将prebuilt file添加进工程。对于APK以及jar的source暂时没有仔细研究,要添加进去的话可以参照/pacakge和/framework里面的Android.mk ~~ 首先是可能用得到的基础知识,必须了解基础Makefile的语法,然后下面是Andriod用来编译相应
2014-03-28 19:50:53
1035
转载 strcpy()、memcpy()、memmove()、memset()的实现
strcpy()、memcpy()、memmove()、memset()的实现strcpy(), 字符串拷贝. char *strcpy(char *strDest, const char *strSrc) { assert((strDest!=NULL) && (strSrc !=NULL)); char *address = strDest;
2011-10-29 21:58:28
985
转载 【1】ptr = malloc(0*sizeof(char))【2】关于typedef的用法总结【3】关于有符号数、无符号数和数据类型的总结
ptr = malloc(0*sizeof(char));(转载)最近,看了有关malloc(0)的返回值以及其他一些问题的讨论,我把自己的感受和看法记录如下:问题:char* ptr = malloc(0*sizeof(char));if(NULL == ptr) printf("got a NULL pointer");el
2011-10-25 21:08:01
1764
转载 C++重载、多态、虚函数
另外一篇关于C++重载、多态、虚函数的文章:[C++基础]重载、覆盖、多态与函数隐藏(1)[C++基础]重载、覆盖、多态与函数隐藏(2)[C++基础]重载、覆盖、多态与函数隐藏(3)[C++基础]重载、覆盖、多态与函数隐藏(4)初学C++,虚函数这部分感觉博大精深啊。C++正是通过虚函数实现了多态。在C++中,以virtual关键
2011-10-24 19:02:12
2180
转载 指针数组 与数组指针
#define MAX 10 char* ch1[MAX];// max个字符串 (指针数组)(char*) ch2[MAX];//错误 在vc6上编译不过char (* ch3)[MAX];//含有MAX个字符的指针;即数组指针 ch3=(c
2011-10-18 15:54:17
720
转载 sizeof进行结构体大小的判断
sizeof进行结构体大小的判断typedef struct{ int a; char b;}A_t;typedef struct{ int a; char b; char c;}B_t;typ
2011-10-17 19:38:52
1007
转载 void fun() const{}; const void fun(){}; 和void const fun(){}; 的区别?
const void fun(){};和void const fun(){};两个相同。 如果采用"按址传递方式"的函数返回值加const 修饰,那么函数返回值(即地址)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。 如果采用"按值传递方
2011-08-24 20:38:14
8036
2
原创 Qt Creator+MinGW+OpenCV2.3.1 开发环境搭建(windows 7 系统)
折腾了一个下午+晚上,总算弄好了,下面说下步骤1.必备软件:Qt SDK for Open Source C++ development on Windows:http://qt.nokia.com/downloads/sdk-windows-cpp-offlineQ
2011-08-24 10:13:36
12545
1
原创 由三点确定一个圆(圆心,半径)
数据结构//圆信息struct CircleInfo{ CvPoint circlecentre; //圆心 double raduis; //半径};/点信息struct CvPoint{ int x; int y};Circl
2011-07-15 11:00:01
10275
原创 APUE-8.3节fork函数实例,printf输出两次问题
fork函数实例代码:#include "apue.h"int glob = 6; /* external variable in initialized data */char buf[] = "a write to stdout/n";intmain(void){ int var; /* automatic variable on the st
2011-06-30 23:35:00
2468
原创 Linux字符设备驱动-globalmem驱动编译加载遇到的问题及解决办法
代码是直接复制《LINUX设备驱动开发详解》里面的(源代码见下面)。Makefile如下:obj-m := globalmem.o KERNELBUILD := /lib/modules/`uname -r`/builddefault: make -C $(KERNELBUILD) M=$(shell pwd) modulesclean: rm -rf *.o .*.c
2011-06-29 20:14:00
3052
原创 TQ2440驱动-hello world(入门,注意事项)
驱动开发使用的是tq2440的开发板,linux内核版本为linux-2.6.30.4。 开发平台: 虚拟机下UBUNTU,内核2.6.38.10 交叉编译编译器:天嵌公司提供的arm-linux-gcc 4.3.3 内核树:/opt/EmbedSky/linux-2.6.30.4目标平台: TQ2440,内核是ARM9 OS内核:配套光盘中的linux-2.6.
2011-06-28 20:32:00
2876
原创 linux下c语言写的简单的贪吃蛇
基本算是第一次在linux下写程序,果然各种不习惯。 用的是emacs,都说是IDE中的神器,但是我还没用习惯,gdb调试也不怎么熟悉,linux下的c程序设计也只是看了个皮毛,所以虽然是个简单的小程序,也绝对比在windows下写多用了至少一倍的时间。虽然很想学好linux下c,但是无奈只能用课余时间看。 目前已知的不足: 目前已知的不足:1.没加注释,因为懒 而且编辑器输入法不习
2011-06-26 12:13:00
10694
3
原创 APUE习题:以O_APPEND标志open的文件,lseek后读写问题
O_APPEND的含义是在每次写之前,都讲标志位移动到文件的末端。表面上读这句话可能会有误解。提出一个问题:当在O_APPEND打开后,然后用 lseek移动到其他的位置,然后再用write写,这个时候,请问你数据写到哪里去了?是在末端,还是lseek移动到得位置。答案是在末端。因为 O_APPEND打开后,是一个原子操作:移动到末端,写数据。这是O_APPEND打开的作用。中间的插入
2011-06-21 16:42:00
4902
转载 【转载】关于static和extern的用法
一些基本概念:1. 编译单元(模块): 在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌 入式下做开发工作的话,那么你可能非常的理解编译与连接的区别!当在VC这样的开
2011-06-19 16:30:00
1233
转载 《C陷阱与缺陷》理解函数声明:(*(void(*)())0)() 和signal函数声明
void (*signal(something))(int);理解函数声明有一次,一个程序员与我交谈一个问题。他当时正在编写一个独立运行于某种微处理器上的C程序。当计算机启动时,硬件将调用首地址为0位置的子例程。 为了模拟开机启动时的情形,我们必须设计出一个C语句,以显式调用该子例程。经过一段时间的思考,我们最后得到的语句如下: (*(void(*)())0)(
2011-06-19 16:28:00
1855
转载 《C陷阱与缺陷》理解函数声明:(*(void(*)())0)() 和signal函数声明
void (*signal(something))(int);理解函数声明有一次,一个程序员与我交谈一个问题。他当时正在编写一个独立运行于某种微处理器上的C程序。当计算机启动时,硬件将调用首地址为0位置的子例程。 为了模拟开机启动时的情形,我们必须设计出一个C语句,以显式调用该子例程。经过一段时间的思考,我们最后得到的语句如下: (*(void(*)())0)(
2011-06-19 00:41:00
1200
原创 几种最基本的排序方法
随手写的。可能有错。//冒泡排序#include int main(){ int num[] = {1,4,2,6,5}; int length = sizeof(num)/sizeof(int); int i; int j; int temp; //交换的次数 int change_times=0; //外层循环一共执行 length-1次
2011-06-18 15:16:00
947
转载 一个微软面试题--关于位结构体
写出下列程序在X86上的运行结果。 struct mybitfields { unsigned short a : 4; unsigned short b : 5; unsigned short c : 7; }test; void main(void) { int i; test.a=2; test.b=3; test.c=0; i=*((short *)&test); printf("%d
2011-06-16 20:43:00
2142
转载 c++中冒号(:)和双冒号(::)的用法
转载于:http://fengqing888.blog.163.com/blog/static/3301141620100623933512/1.冒号(:)用法(1)表示机构内位域的定义(即该变量占几个bit空间)typedef struct _XXX{ unsigned char a:4; unsigned char c;} ; XXX(2)构造函数后面的
2011-06-16 20:38:00
270049
22
原创 new/delete 和malloc/free 的区别(综合转帖)
相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执
2011-06-15 23:58:00
1554
转载 数组与指针的艺术--深入探索c/c++数组与指针的奥秘
原帖http://topic.youkuaiyun.com/u/20091123/11/0c03d2e2-0655-4634-8287-0e2315d889fc.html 前言:http://blog.youkuaiyun.com/supermegaboy/archive/2009/11/23/4855036.aspx第一章:数组与指针概念剖析 http://blog.youkuaiyun.com/supermegaboy/
2011-06-15 23:29:00
890
转载 深入学习C语言知识点checklist——测试你掌握C的程度
原帖:http://topic.youkuaiyun.com/u/20091027/22/0573cfb5-f1bf-4cf2-8e60-13d907301a8e.htmlhttp://blog.youkuaiyun.com/chgaowei/archive/2009/10/27/4731498.aspx 主要资料 项目的主要资料有:《c 缺陷和陷阱》, 《 c 和指针》, 《 c 专家编程》。其中《 c
2011-06-15 23:20:00
1646
转载 const用法详解
const用法详解面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的就const直接可以取代c中的#define以下几点很重要,学不好后果也也很严重const1. 限定符声明变量只能被读 const int i=5; int j=0; ... i=j; //非法,导致编译错误 j=i; //合法2. 必须初始化 const int i=5; //
2011-06-15 00:02:00
642
转载 内存泄露调试之 _CrtSetBreakAlloc
在用VS或者VC进行编程的过程中,经常会在编译器的输出窗口看到类似下面的内容:Detected memory leaks!Dumping objects ->{52} normal block at 0x006D2498, 512 bytes long. Data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 {51} normal b
2011-06-13 23:03:00
1110
转载 vs2010调试内存泄露 a CMFCVisualManager object at $01481660, 200 bytes long
ExitInstance 成员函数 每当应用程序的副本终止时(通常是因为用户退出应用程序),都调用 CWinApp 类的 ExitInstance 成员函数。如果需要进行特殊的清理处理(如释放图形设备接口 (GDI) 资源或释放程序执行期间使用的内存),请重写 ExitInstance。但文档和视图等标准项的清理工作由框架提供,其他可重写函数将用于特定于那些对象的特殊清理工作。 在你的CX
2011-06-13 09:50:00
4671
转载 delete 和delete[]的区别
new对应delete而new[]对应的是delete[] 释放空间的作用上基本上一样,但是delete[]和delete调用的析构函数的次数是不一样的,delete只调用一次,而delete[]会根据new[]创建的对象数调用析构函数。 条款5:对应的new和delete要采用相同的形式 下面的语句有什么错?
2011-06-12 23:16:00
1118
转载 char *p="abcdef"和char s[]="abcdef"存储在哪里的问题!
char *p="abcdef"; //"abcdef" 静态存储区,是常量区,不可改, p[2]企图通过p这个指针改变常量区的内容,所以你这个程序编译通过,运行会出错char s[]="abcdef";//"abcdef" 静态存储区, 你赋值给s[]这个变量后,改变s[2],所以不出错。 p, s 在同一个区,如果是局部变量,就是在栈里面。 "abcdef"; //静态存储区,是常量区,不可改
2011-06-09 23:44:00
2005
转载 深入理解C语言指针的奥秘
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr;
2011-06-08 15:14:00
540
1
转载 const用法详解
面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的就const直接可以取代c中的#define以下几点很重要,学不好后果也也很严重const1. 限定符声明变量只能被读 const int i=5; int j=0; ... i=j; //非法,导致编译错误 j=i; //合法2. 必须初始化 const int i=5; //合法 co
2011-06-08 15:11:00
634
转载 opencv 删除二值化图像中面积较小的连通域
对于上图的二值化图像,要去除左下角和右上角的噪点,方法:使用opencv去掉黑色面积较小的连通域。代码 CvSeq* contour = NULL; double minarea = 100.0; double tmparea = 0.0; CFileDialog dlg(true); if (dlg.DoModal()==IDOK) {
2011-06-06 16:42:00
36526
2
转载 基于OPenCV和MFC的读图程序
一、基本设置(通用) 安装好opencv后并设置好环境(见《opencv安装与装置》) 二、对话框 在VC++6.0中新建对话框,工程名为yuhuan。然后按以下几个步骤: (1)给对话框添加一个读图按钮和picture控件分别修改读图按钮和picture控件ID为:IDC_OPENIMAGE,IDC_IMAGE.如右图。并为读图按钮添加实现函数。(2)在对话框的头文
2011-06-03 19:35:00
1922
原创 CString详解以及CString转换成char*
CString 型和 char* 类型的相互转化1.CString 转化成 char* 之一:强制类型转换为 LPCTSTR; 这是一种略微硬性的转换,有关“正确”的做法,人们在认识上还存在许多混乱,正确的使用方法有很多,但错误的使用方法可能与正确的使用方法一样多。 我们首先要了解 CString 是一种很特殊的 C++ 对象,它里面包含了三个值:一个指向某个数据缓冲区的指针、一个是该缓冲
2011-06-03 19:23:00
1049
转载 VS2010 中const char *转换为LPCWSTR的方法Unicode
http://chenet.blogbus.com/logs/28070247.html VS2010默认是Unicode的,在VC 6.0中编译成功的项目在VS2010中常会出现类型错误。 经常出现的错误是:不能从const char *转换为LPCWSTR如使用CreateDC("DISPLAY",NULL,NULL,NULL
2011-06-03 19:21:00
4038
转载 sizeof,strlen总结比较
首先看一MSDN上如何对sizeof进行定义的: sizeof Operator sizeof expression The sizeof keyword gives the amount of storage, i
2011-01-03 18:55:00
638
转载 MFC Object和Windows Object的关系
<br />本文来自编程入门网:http://www.bianceng.cn/Programming/vc/201003/16099.htm<br /> <br /> <br />MFC中最重要的封装是对Win32 API的封装,因此,理解Windows Object和MFC Object (C++对象,一个C++类的实例)之间的关系是理解MFC的关键之一。所谓Windows Object(Windows对象)是Win32下用句柄表示的Windows操作系统对象;所谓MFC Object (MFC对象)是C
2010-10-16 20:20:00
608
转载 MDI应用程序的构成
<br />本文来自编程入门网:http://www.bianceng.cn/Programming/vc/201003/16098_2.htm<br /> <br />本节解释一个典型的MDI应用程序的构成。<br />用AppWizard产生一个MDI工程t(无OLE等支持),AppWizard创建了一系列文件,构成了一个应用程序框架。这些文件分四类:头文件(.h),实现文件(.cpp),资源文件(.rc),模块定义文件(.def),等。<br />构成应用程序的对象<br />图1-1解释了该应用程序
2010-10-16 20:06:00
1300
转载 CBitmap::LoadBitmap问题
BOOL LoadBitmap(LPCTSTR lpszResourceName)BOOL LoadBitmap(UNIT nIDResource)通过指定资源名称或者资源ID加载指定位图。但指定的资源要是程序导入的资源,不能直接以位图的路径和名字为参数。CBitmap::LoadBitmap()不能以文件形式打开,原因不知道,虽然提供了LPCTSTR lpszResourceName(主持人注:这个参数是DLL或EXE中的资源名,不是文件名),给出了另外的方法,也是常用的。请看下面的代码:
2010-10-15 19:35:00
5170
转载 在对话框中加入工具条与 RepositionBars的调用
新建一个对话框IDD_DIALOG1,然后新建一个工具栏IDR_TOOLBAR1,要将上面的工具条插入到对话框当中的话,可以如下操作BOOL ExaDg_1::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here/////////////////产生
2009-03-30 09:25:00
1239
C++ 学习经典书籍 英文原版
2011-09-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人