代码改变世界

文件和文件系统的一点知识

2016-05-21 16:47 by 虫虫与贝贝, 155 阅读, 0 推荐, 收藏,
摘要:(1)lseek(): 仅将当前的文件偏移量记录在内核中,并不引起任何IO操作 (2)od命令的使用: od -c <filename> 以字符方式打印文件内容 (3)操作系统中进程终止时,内核会关闭进程中所有的文件描述符,因此有些program在退出时并没有显式调用close(). 以下转自htt 阅读全文

(转)C/C++函数调用约定

2013-08-14 21:15 by 虫虫与贝贝, 185 阅读, 0 推荐, 收藏,
摘要:关于C/C++函数调用约定,大多数时候并不会影响程序逻辑,但遇到跨语言编程时,了解一下还是有好处的。VC中默认调用是__cdecl方式,Windows API使用__stdcall调用方式,在DLL导出函数中,为了跟Windows API保持一致,建议使用__stdcall方式。调用约定跟堆栈清除密切相关。如果写一个汇编函数,给C/C++调用,在__cdecl方式下,则汇编函数无需清除堆栈,在__stdcall方式下,汇编函数需要在返回(RET)之前恢复堆栈。C语言有__cdecl、__stdcall、__fastcall、naked、__pascal。C++语言有__cdecl、__stdc 阅读全文

(转)c语言中可变参数函数的设计

2013-08-14 20:49 by 虫虫与贝贝, 468 阅读, 0 推荐, 收藏,
摘要:1,首先,怎么得到参数的值。对于一般的函数,我们可以通过参数对应在参数列表里的标识符来得到。但是参数可变函数那些可变的参数是没有参数标识符的,它只有“…”,所以通过标识符来得到是不可能的,我们只有另辟途径。我们知道函数调用时都会分配栈空间,而函数调用机制中的栈结构如下图所示: | ...... | ------------------ | 参数2 | ------------------ | 参数1 | ------------------ | 返回地址 | ------------------ |调用函数运行状态| ------------------可见,参数是连续存储在栈里面的,那么也就 阅读全文

(转)C++的extern "C"

2013-07-28 10:40 by 虫虫与贝贝, 249 阅读, 0 推荐, 收藏,
摘要:一、extern "C"的用法一使用原则: 当在C++中引用C的函数或变量,在包含C头文件的时候应该使用extern "C"。ps: C的函数或变量指的是通过gcc编译的c文件。1.1utils.h#ifndef __utils_h__#define __utils_h__int add(int,int);#endif1.2utils.c#include"utils.h"int add(int x,int y){ return x+y;}1.3main.cpp#include#ifdef __cplusplusextern" 阅读全文

Qt调用动态库的方法

2013-07-24 07:29 by 虫虫与贝贝, 5728 阅读, 0 推荐, 收藏,
摘要:最近尝试了在Qt调用VS动态库的2种方法:显式加载和隐式加载。Qt版本采用5.1,使用的默认编译器gcc;VS使用2010。详细过程如下:(1)在VS2010中导出动态库,导出过程未使用windows平台相关的代码。 1 /*************************************** 2 * MyDll.h 3 ***************************************/ 4 #ifndef MYDLLEXPORT 5 #define MYDLLEXPORT extern "C" __declspec(dllimport) 6 #... 阅读全文

(转)什么是BETA,RC,ALPHA版 - 软件命名规范

2013-07-21 17:13 by 虫虫与贝贝, 495 阅读, 0 推荐, 收藏,
摘要:1. 软件版本阶段说明* Alpha版: 此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改。* Beta版: 该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI。* RC版: 该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几。* Release版: 该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标准版。一般情况下,Release不 阅读全文

用VS2010编译Qt工程源码

2013-07-18 07:53 by 虫虫与贝贝, 2024 阅读, 0 推荐, 收藏,
摘要:1.为什么会有这种需要?我猜测可能原因是window平台下Visual Studio较Qt虽然庞大,但是还是有开发调试方便的优势,因此主流的开发环境还是MSVC。但有些程序一开始为了跨平台开发于Qt之上,又想继续在VS中开发,于是需要这种开发环境的转换。2.具体解决方法qmake生成平台兼容的项目文件(*.pro),以及针对具体平台的Makefile文件和工程文件。生成可执行文件一般包括三步:生成一个以.pro后缀的文件,它用于指示该目录下的源文件、头文件等,可以在不同平台下通用。 qmake -project使用这个命令时要注意,qmake并不会将依赖库添加到*.pro中,在后面的Make. 阅读全文

怎样编译和应用开源项目的代码?(贝贝)

2013-06-16 22:53 by 虫虫与贝贝, 1334 阅读, 0 推荐, 收藏,
摘要:贝贝从去年开始,开始需要在应用程序的开发时使用第三方的库文件。一看到一大堆的.dll人就晕了。别笑话我,菜鸟入门尤其难。刚开始,有样学样,别人加include,我就加include,别人加lib,我就加lib。但,加的是什么,为什么这么加,一直不懂。从OSG、shapelib、opticks到最近自己想编编cppunit。每次一开始编译,就开始头大,不知道哪里又会有点小问题等着我。一出问题,就一通include的乱加。这篇文章写写我对开源项目编译和应用的一些感性认识。包括动态链接/静态链接、lib/dll/.h文件、怎样在VS中设置包含目录等等。 首先,定位。贝贝是应用程序开发者,我需要... 阅读全文