- 博客(22)
- 资源 (19)
- 收藏
- 关注
转载 Linux select()函数介绍
1. 简介 select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。 可是使
2015-10-06 13:39:02 377
转载 Linux pipe函数介绍
1. 函数说明pipe(建立管道):1) 头文件 #include2) 定义函数: int pipe(int filedes[2]);3) 函数说明: pipe()会建立管道,并将文件描述词由参数filedes数组返回。 filedes[0]为管道里的读取端 filedes[1]则为管道的写入端。4) 返回值:
2015-10-06 13:13:35 513
原创 UNIX环境高级编程 apue.h编译文件配置
最近在学习UNIX环境高级编程,看到第一个关于ls的demo,看到头文件#include "apue.h",就打定程序肯定是编译不过了,而是上下求索,将所需的文件和库配置了一番,第一个demo成功编译通过。其基本的配置步骤如下: (1):首先找源代码 网址:http://www.apuebook.com/, 我用的是第二版(2005版本),点进去下载sourcecode即可。下载压缩文件
2013-07-29 18:00:27 1103
转载 #define中的 #与##
在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串。 例子:#include #define paster(n) printf("token"#n"=%d\n",token##n)int main(){ int token9=10; paster(9); getchar();
2013-06-14 16:07:59 537
转载 extern与static
在讨论全局变量之前我们先要明白几个基本的概念:1. 编译单元(模块): 在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌 入式下做开发工作的话,那么你可能非常
2013-06-14 13:10:17 586
转载 this指针基础介绍
转自:http://www.cnblogs.com/uniqueliu/archive/2011/09/24/2189545.html=================this指针的由来====================一个学生可以有多本书一样,而这些书都是属于这个同学的;同理,如果有很多个同学在一起,那么为了确定他们的书不要拿混淆了,最好的办法我想应该就是每个同学都在自己的书上写上
2013-04-08 10:08:46 749
原创 指针数组、数组指针联系和区别
所谓指针数就是存储指针的数组,数组指针即指向数组的指针,前者是数组结构,后者是指针结构。 (1)int a[10] 存储int类型的数组,其容量为10 (2)int *a[10] 存储指向int类型指针的数组,其容量为10,注意“[]”的优先级高于“*”,因此a优先跟[]结合,形成数组。 (3)int (*a)[10] 指向存储10个int类型的数组的指针,注意,“()”优先级高于
2013-04-07 21:12:37 558
转载 cdecl、stdcall、fastcall函数调用约定区别
论函数调用约定 在C语言中,假设我们有这样的一个函数: int function(int a,int b) 调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保
2013-04-07 15:05:38 540
转载 C/C++定义全局变量/常量几种方法的区别
在讨论全局变量之前我们先要明白几个基本的概念:1. 编译单元(模块): 在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌入式下做开发工作的话,那么你可能非常的
2013-03-31 16:49:19 469
原创 浅谈C++中const成员和非const成员的联系和区别
C++中我们经常会碰到const数据成员和const成员函数,他们在使用方面跟非const数据成员和非const成员函数有很大的区别,这里根据自己的经验,谈一下自己看法,如有错误,请大家指教: (1):在赋值方面,const数据成员只能采用初始化列表方式,而非数据成员可以采用初始化列表和构造函数体内赋值两种方式。 class Test {
2013-03-30 15:38:21 809
原创 Android中C++调用Java实现
1:需求分析 在Android中利用NDK进行编程的时候,一般的都是Java层通过JNI调用C++的相关接口,而在有的应用中,需要通过底层C++调用Java层来实现相关功能。比如在进行OMX硬解码画图的时候,需要在底层不断发送请求给Java层,让其不断刷新GlSurfaceView。 2:java层接口 a://弹出消息对话框 public stat
2013-03-25 21:56:38 7097
原创 Ubuntu下OpenGL编程基础解析
本文重点介绍在ubuntu下怎么进行OpenGL基础编程,其主要步骤如下:1:首先当然需要安装一些基本的编译库和OpenGL库文件,主要安装以下两个就ok了 基本编译库:build-essential sudo apt-get install build-essential OpenGL工具库:freeglut3-dev sudo apt-get i
2012-11-24 17:27:57 946
转载 YUV格式解析
YUV是指亮度参量和色度参量分开表示的像素格式,而这样分开的好处就是不但可以避免相互干扰,还可以降低色度的采样率而不会对图像质量影响太大。YUV是一个比较笼统地说法,针对它的具体排列方式,可以分为很多种具体的格式。转载一篇对yuv格式解释的比较清楚地文章,也可以直接参考微软的那篇文章。对于YUV格式,比较原始的讲解是MPEG-2 VIDEO部分的解释,当然后来微软有一个比较经典的解释,中文的大
2012-07-03 13:51:46 399
原创 valgrind工具使用解析
valgrind是一款Linux下内存调试工具,它可以检测程序中存在的内存泄露等问题,下面就介绍怎么使用valgrind工具来检测内存泄露等问题。1:获取valgrind工具 这个直接去valgrind官网就可以免费下载到最新版本的valgrind,http://valgrind.org/,下载的压缩版本格式是vargrind-3.7.0.tar.bz2,采用tar jxvf v
2012-07-01 18:14:54 702
转载 linux socket 详解
头文件:sys/socket.h相关结构体:struct sockaddr{ unsigned short sa_family; //地址族 char sa_data[14]; //14字节协议地址};struct sockaddr_in{ short int sin_family; //地址族 unsigned sh
2012-06-14 15:24:25 505
原创 基于Android NDK开发实践案例解析
本案例主要介绍如何利用NDK工具在Android上进行C/C++相关开发,通过生成的JNI接口,编写C/C++函数,编译生成so库,并调用so库,在Android应用层上实现int型加法操作,字符串显示操作和往/sdcard中文件yao.txt写入数据操作。 1:案例分析 在进行Android本地项目开发时,我们需要用到自己的底层函数(.c或.cpp文件)和相关so
2012-06-09 17:49:54 852
原创 Makefile文件编写详解
在Linux下编写小程序时,相信大家都知道怎么做,直接编辑源文件(一般是.c和.cpp),然后采用gcc/g++来编译源文件,生成执行文件,这样一个简单的应用程序就可以编写完成。但是如果对于一个复杂应用程序的时候(包含很多源文件和头文件),如果继续采用“编辑-编译-测试”的方式,则需要操作很多次,且只要其中某一个文件改动,其关联到的文件都要重新编译生成。因此,如果继续采用单步编译的方式,则会浪费很
2012-06-09 17:20:56 2186
原创 关于#ifdef编译选项的使用
最近在coding的时候经常需要对以前的版本反复修改测试,其中要对一大段代码需要重用和不用,很简单的做法当然是直接采用/*..*/注释掉,不过这样很麻烦(因为以后对版本进行修改测试时,有可能又需要用到这段注释代码)。而且有的时候采用/*..*.可能导致注释嵌套,不好判断。 而采用#ifdef的话,可以省去很多事情。 (1):#if 0的使用 代码:
2012-06-01 17:32:49 2796
转载 linux压缩(解压缩)命令详解
一.tar命令 tar可以为文件和目录创建档案。利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar 最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案,如软盘。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文 件或将几个文件组合成为一个文件以便于网络传输是非常有用的。Linux
2012-05-23 17:03:37 306
原创 Linux/Ubuntu 基本命令解析
最近在做Android 组件开发,经常需要在Ubuntu下编译库文件,因此要用到一些基本Linux命令,这里把一些基本的Linux命令列出,方便查询和交流:1:man 查询某个具体命令的用法 eg: man ls (按q键或Ctrl+c 可以退出此命令)2:printenv 查看和设置环境变量(配置环境变量的时候经常用到) eg: printenv 查看
2012-05-23 16:59:00 596
原创 Ubuntu下怎么搭载Android NDK开发环境详解
具体步骤如下: (1):下载NDK工具,这个可以去官网下载http://developer.android.com/sdk/ndk/index.html 选择Linux版本 由于官网提供的都是最新版本,可能会有不兼容的问题出现,这里推荐另一个版本ndk-r4-crystax,下载地址:http://www.crystax.net/zh/android/ndk/4#dow
2012-05-09 17:53:07 1168
原创 Ubuntu下怎么设置Root超级账户密码
最近在做Android的NDK开发,经常要在Ubuntu下编辑so库文件,发现了一个问题,就是有的时候需要用Root超级账才能进行一些操作,而在我们安装Ubuntu的时候总是会创建自己的账户,而没有对Root账户进行设定,因此第一次想进入root账户的时候,系统提示输入密码,这里因为起初就没有设定密码,所以也就不存在输入神马密码,那要想进入root账户怎么办呢? 其实比较简单,具体步骤如下:
2012-05-08 19:29:13 3337
MFC+WINDOWS+程序设计(第2版)
2010-12-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人