每天一点点--C++

#ifdef、#else、#endif

C++中#ifdef、#else、#endif 都是预处理命令,称为条件编译命令。

其中,#ifdef 后接一个标识符和程序段1,#else 后接程序段2和结束条件编译段的预处理命令 #endif。

其中所有的预处理命令都必须换行写,且单独占一行。

其意义为:如果标识符已经用宏定义命令进行过定义,编译程序段1,跳过程序段2;否则,跳过程序段1,编译程序段2。

#define 定义一个预处理
#undef 取消宏的定义
#if 编译预处理中的条件命令,相当于C语法中的if语句
#ifdef 判断某个宏是否被定义,若已定义,执行随后的语句
#ifndef 与#ifdef相反,判断某个宏是否未被定义
#elif 若#if, #ifdef, #ifndef或前面的#elif条件不满足,则执行#elif之后的语句,相当于C语法中的else-if
#else 与#if, #ifdef, #ifndef对应, 若这些条件不满足,则执行#else之后的语句,相当于C语法中的else
#endif #if, #ifdef, #ifndef这些条件命令的结束标志
defined 与#if, #elif配合使用,判断某个宏是否被定义

int32_t

int32_t run_time = -1;

int32_t是有符号整数类型,宽度正好为32位,没有填充位,负值使用2的补码。

int_least32_t是最小有符号整数类型,宽度至少为32位。 仅当实现直接支持该类型时才提供这些。

char *ptr、char const *ptr、char * const ptr

char *ptr;

定义一个指向字符常量的指针,这里,ptr是一个指向 char* 类型的常量,所以不能用ptr来修改所指向的内容,换句话说,*ptr的值为const,不能修改。但是ptr的声明并不意味着它指向的值实际上就是一个常量,而只是意味着对ptr而言,这个值是常量。

char const *ptr;

此种写法和const char *等价,大家可以自行实验验证。

char * const ptr;

定义一个指向字符的指针常数,即const指针,实验得知,不能修改ptr指针,但是可以修改该指针指向的内容。

stoi()

是C++的字符处理函数,把数字字符串转换成int输出,头文件是#include<string>, stoi的参数是const string*,不需要将其转换成const char*。

ofstream、ifstream

ofstream是从内存到硬盘,ifstream是从硬盘到内存。
在实际应用中,根据需要的不同,选择不同的类来定义;如果想以输入方式打开,就用ifstream;如果想以输出方式打开,就用ofstream来定义;如果想以输入/输出方式来打开,就用fstream来定义。
如果想读取一个文件的内容,那么首先需要将文件以输入方式打开( ifstream ),此时将文件调入内存,若是需要将内容输出到屏幕上,可以使用getline函数实现。

fstream.h是头文件,是对文件操作使用的。 继承 iostream; fstream 拥有iostream功能,但并不是包含关系。 fstream 是对文件操作,而 iostream 是 对 标准输入输出文件的操作。
在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。

atomic简介

C++11起提供了atomic,可以使用它定义一个原子类型。

原型: template< class T >

struct atomic;

成员函数:atomic提供了一些与原子操作有关的成员函数。

store 原子地以非原子对象替换原子对象的值

load 原子地获得原子对象的值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值