C/C++填坑笔记——预处理器和标准库&&面向对象类库

日常填坑……

目录

预处理器

参数宏

# 运算符

## 运算符

常用预定义宏

C++标准库

C++面向对象类库

参考:


预处理器

参数宏

记得当时大一时上机时我这么写还被老师gg了……


#include <iostream>
using namespace std;
 
#define MIN(a,b) (a<b ? a : b)
 
int main ()
{
   int i, j;
   i = 100;
   j = 30;
   cout <<"较小的值为:" << MIN(i, j) << endl;
 
    return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

较小的值为:30

# 运算符

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

说人话,就是#x表示x字符串

例子:


#include <iostream>
using namespace std;
 
#define MKSTR( x ) #x
 
int main ()
{
    cout << MKSTR(HELLO C++) << endl;
 
    return 0;
}

输出结果:

HELLO C++

## 运算符

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

说人话,就是x##y表示xy连起来的字符串。

例子:


#include <iostream>
using namespace std;
 
#define concat(a, b) a ## b
int main()
{
   int xy = 100;
   
   cout << concat(x, y);
   return 0;
}

输出:100

#和##这么写的好处在哪呢?个人觉得好处不大,否则也不会用的很少?可能优势就是对整型数和字符型的兼容性笔记比较好?

常用预定义宏

在调试的时候比较好用!虽然有其他库可以用,但是肯定没有宏定义好用啊

描述
__LINE__ 这会在程序编译时包含当前行号。
__FILE__ 这会在程序编译时包含当前文件名。
__DATE__ 这会包含一个形式为 month/day/year 的字符串,它表示把源文件转换为目标代码的日期。
__TIME__ 这会包含一个形式为 hour:minute:second 的字符串,它表示程序被编译的时间。

 例子:

#include <iostream>
using namespace std;
 
int main ()
{
    cout << "Value of __LINE__ : " << __LINE__ << endl;
    cout << "Value of __FILE__ : " << __FILE__ << endl;
    cout << "Value of __DATE__ : " << __DATE__ << endl;
    cout << "Value of __TIME__ : " << __TIME__ << endl;
 
    return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

Value of __LINE__ : 6
Value of __FILE__ : test.cpp
Value of __DATE__ : Feb 10 2020
Value of __TIME__ : 18:52:48

C++标准库

  • 输入/输出 I/O
  • 字符串和字符处理
  • 数学
  • 时间、日期和本地化
  • 动态分配
  • 其他
  • 宽字符函数

C++面向对象类库

  • 标准的 C++ I/O 类
  • String 类
  • 数值类
  • STL 容器类
  • STL 算法
  • STL 函数对象
  • STL 迭代器
  • STL 分配器
  • 本地化库
  • 异常处理类
  • 杂项支持库

参考:

https://www.runoob.com/cplusplus/cpp-preprocessor.html

https://www.runoob.com/cplusplus/cpp-standard-library.html

发布了287 篇原创文章 · 获赞 297 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_41895747/article/details/104192633