清泉逐流

做着努力,等待幸福到来
» 日志

关于C++中的友元函数

时间 : 2014-10-22 23:32 标签 : C++  

1.友元函数的简单介绍

1.1为什么要使用友元函数

查看全文 »

C++中的mutable

时间 : 2014-10-19 22:37 标签 : C++  

mutable本身包含多变之意,在C++中,对一些实时变化的对象,需要使用这个修饰符(specifier)。

(1)mutable只能修饰非静态成员变量。

(2)mutable修饰的成员变量可以在const函数中修改,这个看起来有点迷惑性,不过仔细体会一下应该还是觉得合理。

查看全文 »

从STL的Sort Crash说起

时间 : 2014-10-18 01:14 标签 : C++  STL  

考虑如下代码片段:

class OP{ public: bool operator ()( const int &a, const int &b) const { return a>=b; } }; std::sort(arr,arr+100,OP());猜猜结果会怎样呢?

Crash!

查看全文 »

C++11新特性

时间 : 2014-09-27 23:55 标签 : C++  

什么是C++11

C++11是曾经被叫做C++0x,是对目前C++语言的扩展和修正,C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL),并入了大部分的C++ Technical Report 1(TR1)程序库(数学的特殊函数除外)

查看全文 »

g++的编译及调试

时间 : 2014-09-27 23:55 标签 : C++  

编译重命名等:

g++ –c Hello.cc  编译文件,生成目标文件 Hello.o

查看全文 »

关于函数参数压栈顺序

时间 : 2014-05-26 00:29 标签 : C  C++  

今天无意中注意到一段程序:

int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf("%d,%d",*ptr,*(++ptr));不买关子,结果输出是:8,8

对于这个问题,我们要知道两点:

第一,参数压栈的顺序是从右到左。

查看全文 »

如果你是C/C++选手

时间 : 2014-04-19 23:49 标签 : C  C++  

一个参数既可以是const还可以是volatile吗?

一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。比如,系统时间。

下面的函数有什么错误:

int

查看全文 »

VS2010的emWin+uCOS仿真程序

时间 : 2013-01-28 17:05 标签 : VS2010  C  C++  

最近在研究NXP的一个LPC1765/1768处理器。

需要uCOS+emWin的开发,就在本地VS2010的环境下,参考前人资料移植了一个uCOS II系统,同时加入了emWin的仿真。

由于使用的是emWin的试用版,只提供了头文件的接口和一个lib文件,就在原来的代码基础上改了改。不过对于前期的仿真开发还是很有用的。

下面这个函数相当于一个入口函数,我们在这里可以进行uCOS系统的初始化。

查看全文 »

c++中xx.h和xx.cpp之间的联系

时间 : 2012-12-15 00:31 标签 : C  C++  

  不是很严格的讲,*.h文件做的是类的声明,包括类成员的定义和函数的声明,而*.cpp文件做的类成员函数的具体实现(定义)。

  一个*.h文件和*.cpp文件一般是配对的。在*.cpp文件的第一行一般也是#include"*.h"文件,其实也相当于把*.h文件里的东西复制到*.cpp文件的开头。所以,你全部写在*.cpp文件其实也是一样的。

  除了编程规范外,还涉及到类一个重要性质,就是封装性。比如现在我们公司和另一家软件公司合作,这样就必然要互相提供一些软件的信息(比如一些类,它到底是要做什么的),可是在提供这些信息的同时我们又不像让对方知道我们这些类的具体实现,毕竟这些是我们公司的算法核心和心血啊。所以这个时候就可以把类的接口(这个类是要做什么的)放在*.h文件中,而具体类的实现放在 *.cpp文件。这时候我们只要给对方公司*.h文件就行了。这样既提供了必要的信息,又保护了我们的核心代码。

   

  最表面的机制是:

  头文件是程序的界面(是代码界面),提供给程序员以  类、模版、函数等一系列的声明,让程序员知道应该怎么调用里面的“东西

查看全文 »

*.PCH文件介绍

时间 : 2011-12-08 22:16 标签 : C  C++  

  一般地,编译器以文件为单位编译,如果修改了一工程中的一个文件则所有文件都要重新编译,包括头文件里的所有东西(eg.Macro宏,Preprocessor预处理),而VC程序中,这些头文件中所包括的东西往往是非常大的,编译之将占很长的时间。但它们又不常被修改,是较稳定的,为单独的一个小文件而重新编译整个工程的所有文件导致编译效率下降,因此引入了.PCH文件。

  预编译头文件(一般扩展名为.PCH),是把一个工程中较稳定的代码预先编译好放在一个文件(.PCH)里。

  这些预先编译好的代码可以是任何的C/C++代码,甚至可以是inline函数,只它们在整个工程中是较为稳定的,即在工程开发过程中不会经常被修改的代码。

  为什么需要预编译头文件?一言以蔽之:提高编译速度。

  如何使用预编译头文件以提高编译速度?要使用预编译头文件,必须指定一个头文件(.H),它包含我们不会经常修改的代码和其他的头文件,然后用这个头文件(.H)来生成一个预编译头文件(.PCH),VC默认的头文件就是StdAfx.h,因为头文件是不能编译的,所以我们还需要一个.CPP文件来作桥梁,VC默认的文件为StdAfx.cpp,这个文件里只有一句代码就是:

查看全文 »
» 日志标签