C++模板、预处理、信号处理

http://www.runoob.com/cplusplus/cpp-templates.html

模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。

模板函数
形式如下:

template <class type> 
ret-type func-name(parameter list)
{
   // 函数的主体
}

在这里,type 是函数所使用的数据类型的占位符名称。这个名称可以在函数定义中使用。

类模板
形式如下

template <class type> 
class class-name {
.
.
.
}

在这里,type 是占位符类型名称,可以在类被实例化的时候进行指定。您可以使用一个逗号分隔的列表来定义多个泛型数据类型。

C++预处理
http://www.runoob.com/cplusplus/cpp-preprocessor.html
预处理是一些指令,指示编译器在实际编译前所需完成的预处理

#define预处理
用于创建符号常量。该符号常量通称为宏,指令一般形式:
#define macro-name replacement-text

参数宏
#define MIN(a,b) (a

#ifndef NULL
   #define NULL 0
#endif

#ifdef DEBUG
   cerr <<"Variable x = " << x << endl;
#endif

#if 0
   不进行编译的代码
#endif

# 和 ## 运算符
# 运算符会把 replacement-text 令牌转换为用引号引起来的字符串。

#include <iostream>
using namespace std;

#define MKSTR( x ) #x

int main ()
{
    cout << MKSTR(HELLO C++) << endl;

    return 0;
}

## 运算符用于连接两个令牌

#include <iostream>
using namespace std;

#define concat(a, b) a ## b
int main()
{
   int xy = 100;

   cout << concat(x, y);
   return 0;
}

C++中预定义宏
LINE:当前行
FILE:当前文件名
DATE:当前日期
TIME:当前时间

C++信号处理
信号是由操作系统传给进程的中断,会提早终止一个程序。
有些信号不能被程序捕获,但是下表所列信号可以在程序中捕获,并可以基于信号采取适当的动作。这些信号是定义在 C++ 头文件 中。
SIGABRT:程序异常终止
SIGFPE:错误的算数预算
SIGILL:检测非法指令
SIGINT:接收到交互注意信号
SIGSEGV:非法访问内存
SIGTERM:发送到程序的终止请求

signal()函数
C++信号处理库提供了signal函数,用来捕获突发事件,语法如下:void (*signal (int sig, void (*func)(int)))(int);
这个函数接收两个参数:第一个参数是一个整数,代表了信号的编号;第二个参数是一个指向信号处理函数的指针。

raise()函数
生成信号,带有一个整数信号编号作为参数:int raise (signal sig);
在这里,sig 是要发送的信号的编号,这些信号包括:SIGINT、SIGABRT、SIGFPE、SIGILL、SIGSEGV、SIGTERM、SIGHUP。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值