1.C++20的import
看看梦开始的地方:
import <iostream>;
int main()
{
std::cout << "Hello World!\n";
}
经过不仔细观察发现梦开始的好像不太一样,这个import是C++20的模块特性
如果是在VS里编写的话,要用这个功能需要新建一个头文件,例如HeaderUnits.h,在里边这样写:
#pragma once
import <iostream>;
import <vector>;
import <optional>;
import <utility>;
//......
然后右键-->属性
配置属性-->常规-->项类型改为 C/C++编译器
配置属性-->C/C++-->高级-->编译为改为“作为C++标头单元编译(/exportHeader)”
2 注释 // 和/**/
3 函数声明和函数定义
4 常用的预处理命令
预处理指令 | 功能 | 常见用法 |
---|---|---|
#include [file] | 将指定的文件插入代码中指令所在的位置 | 几乎都是用来包含头文件,使代码可使用在其他位置定义的功能 |
#define [id] [value] | 每个指定的标识符都被替换为指定的值 | 在C中,常用来定义常数值或宏。C++提供了常数和大多数宏类型的更好机制。宏的使用具有风险,因此在C++中使用它们要谨慎 |
#ifdef [id] #endif #ifndef [id] #endif | ifdef("if defined")块或ifndef("if not defined")块中的代码被有条件的包含或舍弃,这取决于是否使用#define定义了特殊的标识符 | 经常用来防止循环包含。每个头文件都以#ifndef开头,以保证某个标识符还未被定义,然后用一条#define指令定义该标识符。头文件以#endif结束,这样这个头文件就不会被多次包含。 |
#pragma [xyz] | xyz因编译器而异。如果在预处理期间执行到这一指令,通常会显示一条警告或错误信息。 |
支持#pragma once就用这个
5 int main(int argc, char* argv[])实际参数从索引1开始
6 C++20的std::format
示例:
std::cout<<std::format("There are {} ways I love you.",219)<<std::endl;
不建议过度使用endl,会刷新缓冲区,影响性能
7 namespace 和 作用域解析运算符::
namespace mycode {
void test(){
}
}
mycode::test();
命名空间嵌套:
namespace MyLibraries::Networking::FTP{
}//仅在C++17之后支持
或
namespace MyLibraries{
namespace Networking{
namespace FTP{
}
}
}
命名空间别名:
namepsace MyFTP=MyLibraries::Networking::FTP;
8 十六进制浮点字面量
9 声明时初始化
int initInt{ 7 };
cout << uninitInt << endl;