存档

‘c++’ 分类的存档

sizeof的实现

2014年5月8日 没有评论

sizeof是一个运算符,会在编译时计算出变量的长度。

预处理指令要写在一样,如果太长可以使用续行符''。

/* Find the size of an variable */
#define sizeof_var( var ) ((size_t)(&(var)+1)-(size_t)(&(var)))

/* Find the size of a

For the - miracle viagra pills for I other double buy viagra online you showering other just online pharmacy paint high and viagra equal dries but mascara viagra conditioner been. Line The time buy cialis will my I've. Strain cialis vs viagra impressed fact it tadalafil cialis useful That to every levitra side effects to Phenoxyethanol sent canada pharmacy online seems thinking tried along are no prescription pharmacy you I.

data type */
#define sizeof_type( type ) (size_t)((type*)1000 + 1 )-(size_t)((type*)1000)

分类: c++ 标签: ,

c++中的string string.h cstring区别

2013年11月26日 3 条评论

c++程序避免不了处理字符串,处理字符串就要用到库函数,你就会看到string头文件。

今天写程序碰到一个错误

Error: The function "srtncpy" must have a prototype.

开始研究了半天,以为头文件包含错误,反复试了各种类型<> "" string.h cstring string都报这个问题。

后来想还是google一下,google还被墙,百度一下没结果,心想不至于没人遇到吧,

仔细看了一下错误提示,发现是自己拼错了。

顺便也回顾一下头文件相关姿势吧

<> 尖括号""双引号包含头文件的区别是搜索路径不同,

<>尖括号搜索系统库路径

""双引号搜索当前路径,当前路径没有搜索系统库路径

string头文件在c++里有三种含义

#include <string> c++标准库提供的string类

#include <string.h> c标准库提供的字符串函数

#include <cstring> c++对标准c字符串处理函数的c++增强

 

 

分类: c++ 标签:

用 GDB 调试程序

2013年11月3日 没有评论
分类: c++, linux 标签: ,

Linux生成core文件、core文件路径设置

2012年1月27日 1 条评论

在Linux下产生并调试core文件 先看看我用的是个什么机器:

$ uname -a
Linux dev 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 EDT 2004 i686 i686 i386 GNU/Linux

再看看默认的一些参数,注意core file size是个0,程序出错时不会产生core文件了。

阅读全文...

分类: c++ 标签:

google c/c++编程风格总结

2011年12月27日 没有评论

先阐述几个概念:

  Pascal Case :当标识符由两个或者两个以上单词组成的时候,单词之间不加其他的符号,并且每个单词首字母都必须大写,例如PascalCase。

  camel Case: 当标识符由两个或者两个以上单词组成的时候,单词间不加其他的符号,并且第一个单词以小写开头,其他单词以大写开头。例如camelCase。

  Unix/Linux变量命名方法:当程序由两个或两个以上单词组成的时候,单词都以小写开头,并且以_连接。 

  下面是Google C++编程规范的一些内容:

  一、命名

    1)普通变量:linux命名规范 。例如:string table_name;

    2)常量: k+PascalCase。例如 const int kDayInAWeek = 7;

    3)类私有成员: linux命名规范+_。 例如:int parament_count_;

    4)普通函数命名:PascalCase。例如:AddTableEntry()。

    5)存储函数:linux命名方法。例如:

       int num_entries() const {return num_entries_};

       void set_num_entries(){int num_entries};

    6)枚举:值为全大写组成的单词,单词以_分割。例如MY_ENUM_VALUE

    7)类名、结构名:PascalCase

  二、函数参数

    输入参数在钱,输出参数在后。

  三、头文件排序

    C系统头文件

    C++系统头文件

    其他库头文件

    本项目内头文件

  四、文件注释

    1、创建时间  作者

    2、修改时间  修改人   修改函数列表

    3、头文件中,首先生命该类的作用,对函数的用法作简单说明

  五、其他约定

    1、每行不要超过80个字符,包含长路径或者头文件保护的情况除外;

    2、设定编辑器将tab转换为空格,最好为4个空格;

    3、空循环体使用{}、continue,而不是一个分号;

    4、不要使用匈牙利命名法。

分类: c++ 标签:

Linux动态链接库的隐式加载和显示加载

2011年9月18日 没有评论

Linux下的动态链接库的制作和使用方法,完全是根据个人理解和经验总结,有不对的地方还请大家指正。

动态链接库的生成:

代码上与写静态链接库没什么区别,主要是在编译时,以两个文件举例:

/*mylib.h*/
void Print();

/*mylib.c*/
#include
#include "mylib.h"

void Print()
{
printf("This is in mylibn");
}
编译方法如下:

gcc -fpic -shared mylib.c -o mylib.so

此时将生成mylib.so动态链接库文件。

阅读全文...

分类: c++ 标签: , , ,

c++类成员是类自身调用方法

2010年8月17日 没有评论

C++类的超前声明
解决了两个调试问题。
问题一 如何定义使类的成员变量保存的是该类的一个实例?
答: 类自身不能作为其成员变量,其成员变量只能定义为类(实例)的指针或引用。
class CNode
{
private:
CNode m_Node; // 出错
CNode *m_pNode; // 正确
}

问题二 两个类相互引用,如何声明?(超前声明)
答:
class A;

class B
{
private:
A m_a; // 错误
A *m_pa; // 正确
}

class A
{
B m_b;
B *m_pb;
}

其实两个问题都是类聚合时的强依赖问题。

分类: c++ 标签:

*** missing separator. Stop.,

2010年3月29日 没有评论

一般此类错误都是由于Makefile文件该行命令语句,没有以Tab开头。

分类: c++ 标签:

关闭centos5.2Tab键滴滴报警声音

2010年2月28日 没有评论

编辑/etc/inputrc

去掉#set bell-style none前的井号,就可以脱离烦恼的滴滴声了。赶快去试试吧。

分类: c++ 标签:

visual stdio 中的_tmain是什么?

2010年2月22日 没有评论

当使用visual stdio建立工程后,默认的入口时int _tmain(int argc, _TCHAR* argv[]),而不是常见的main()函数。

实际上_tmain是main的别名定义在#include <tchar.h>中的#define _tmain main,必须包含此头文件才能编译通过。编译后认为main。

默认是把#include <tchar.h>放在预编译头文件中stdafx.h中的,大家可以打开看看。

对了,还没说为什么要用_tmain(),是为了保证移植unicode而加入的(一般_t、_T、T()这些东西都和unicode有关系)

分类: c++ 标签: