WSL
WSL使用笔记
C++碎片(二)
[TOC]
关于多线程
多线程可以同时做多件事,且可以互相交流影响。
首先包含头文件thread,例:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include <iostream>#include <thread>static bool s_Finished = false;void Dowork(){ using namespace std::chrono_literals; //注意C++14才添加了名称空间std::chrono_literals //可用字面量 24h、30min、10s、2ms等 std::cout<<"started thread id = "<<std::this_thread::get_id()<<std::endl; while (!s_Finished) { ...
C++新特性
[TOC]
C++可变参数模板
123456789101112131415161718void f(){}//函数出口,变参本质上像递归,最后没有参数时执行f(),所以需要出口template<class T, class...Args> //变参模板格式class...Args,包括后面的Args...args //想要一个一个操作参数则需 class T——T tvoid f(T t, Args...args){ std::cout<< t <<"---"<<sizeof...(args)<<'\n'; //t为输入的第一个参数(sizeof...查看参数个数) f(args...); //剩下的参数递归调用,最后没参数调用出口函数f()} int main(){ f(1,"%%&*$",2.3); return 0;}
C++可 ...
C++碎片(一)
[TOC]
关于C++头文件
导入符号使用细节
"xxx.h"和<xxx.h>都用于包含头文件(在编译器包含正确路径的前提下),"xxx.h"优先从代码include文件(文件夹)中查找;<xxx.h>优先从计算机已安装库里查找(如:Linux系统中
/include; /local/include)
此外常用的"xxx.h"可用作相对位置查找(比较实用)
12#include "../include/Log/Log.h" //表示从当前文件的上一级目录下的include/Log/中查找Log.h
避免重复导入
常用形式:
1234567#ifndef _LOG_H#define _LOG_H//XXX//XXX #endif
可用简洁形式 #pragma once 代替(推荐)
检查重复导入作用,例如:在头文件中构造一个结构体,若不做重复导入避免处理,会报重定义错误。
关于软件调试
代码调试前提是需要生成DEBUG模式的可执行文件。调试核心是断点和读内存。
断点
break
point设置断点后,运 ...
Cmake常用语句
[TOC]
cmake基本结构
首先一般先声明Cmake版本要求、项目名称、编译标志:
12345cmake_minimum_required (VERSION 3.x)project (XXXXXXX) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -std=c++14")
定义宏
1234add_definitions(-DPRE_DEBUG=1)#或add_compile_definitions(PRE_DEBUG=1)#相当于C++中:#define PRE_DEBUG 1
设置源码目录:
12set (source_dir "${PROJECT_SOURCE_DIR}/src/") #${PROJECT_SOURCE_DIR}为CMakeLists.txt所在文件夹位置
可选配置(变量代替所有文件):
12file (GLOB source_files "${s ...