VS2019遇到的坑——C4716 具体代码如下:bool operator!=(const _list_node_iterator & node2){//必须const? return this->node != node2.node;}在linux平台编译完全没问题,在vs2019上报C4716错误,缺少返回值错误错误出在注释结尾的?上,此?号为中文符号,改为英文符号?即可...
C++显示转换、dynamic_cast重点 命名的强制类型转换具体格式如下:cast-name<type>(expression)type是转换的目标类型expression是要转换的对象cast-name包括static_cast、dynamic_cast、const_cast和reinterpret_caststatic_cast只要不包含底层const都可以使用static_cast。例如下面转换:double slope = static_cast<double>(j)/i;当需要把一
APUE(第九章)进程关系 终端登录网络登录进程组同一进程组中的各进程接收来自同一终端的各种信号。每个进程组有一个唯一的进程组ID,进程组ID类似于进程ID,是一个正整数,存放在pid_t中#include <unistd.h>pid_t getpgrp(void);//返回值:调用进程的进程组IDpid_t getgid(pid_t pid);//成功:返回pid的gid,出错返回-1若pid是0,返回调用进程的进程ID,等价于getgrp();每个进程组有一个组长进程。组长进程组ID等于其进程
APUE(第八章)进程控制 进程标识每个进程都有一个非负整型表示的唯一ID。由于进程ID总是唯一的,可将其用作其他标识符保证唯一性,比如用进程ID作为名字的一部分创建一个唯一的文件名进程ID是唯一的但是可以复用。当一个进程终止后,其进程ID就成为复用的候选者,大多数系统都有延时算法,使得赋予新建进程得ID不同于最近终止进程所使用得ID。防止将新进程误认为使用同一ID的某个已终止进程系统中有一些专用进程ID为0的进程称为调度进程,或者叫交换进程,该进程是内核的一部分,并不执行磁盘上的程序,也被称为系统进程
APUE(第七章)进程环境 APUE(第七章)进程环境mainint main(int argc,char **argv);//或者int main(int argc,char *argv[]);具体参数描述看:关于int main( int argc, char* argv[] ) 中arg和argv参数理解进程终止正常终止从main函数返回调用exit调用_exit或_exit最后一个线程从其启动例程返回从最后一个线程调用pthread_exit异常终止调用abort接收到一个信号
APUE(第五章)标准IO 本章介绍的标准IO库,不仅是UNIX,多其他操作系统都实现了标准io库,比如windows,由ISO C标准说明缓冲的重要性流和FILE对象标准IO库的操作是围绕流(stream)进行的。标准IO文件流可用于单字节和多字节(宽)字符集,当一个流最初被创建时,并没有定向若在未定向的流上使用多字节的IO函数,则该流的定向设置为宽定向的若在未定向的流上使用单字节的IO函数,则该流的定向设置为字节定向的。只有两个函数可以改变流的定向,freopen清除一个流定向,fwide设置流的.
APUE(第四章)文件和目录 重点理解文件系统函数stat、fstat、fstatat和lstat#include <sys/stat.h>int stat(const char *restrict pathname,struct stat *restrict buf);int fstat(int fd,struct stat *buf);int lstat(const char *restrict pathname,struct stat *restrict buf);int fstatat(int fd,co
APUE(第二章) UNIX标准化ISO Crestrict关键字不影响POSIX接口。restrict关键字告诉编译器,哪些指针是可以优化的,其方法是指出指针引用的对象在函数中只能通过该指针进行访问。IEEE POSIXPOSIX最初是IEEE制定的的标准族是可移植操作系统接口,第一章有介绍下图是POSIX要求必须含有的头文件,·表示含有下图是POSIX要求可选含有的头文件,·表示含有,XSI表示(X/open System Interface,XSI,详细见下一标准)Single U
APUE(第三章)文件IO 引言本章主要讲文件IO包括:open、read、write、lseek以及close。这些函数通常被称为不带缓冲的IO,不带缓冲至每个read与write都有内核中的一个系统调用。这些不是ISO C的组成部分,但是是Posix.1与SUS的组成部分本章介绍的原子操作概念十分重要还将介绍dup、fcntl、sync、fsync、ioctl等等文件描述符所有文件都通过文件描述符引用文件描述符是一个非负整数打开或者创建一个新文件,内核进程返回一个文件描述读写一个文件时,将其作为参数传递给
APUE(第一章) UNIX操作系统体系结构内核:控制计算机硬件资源,提供程序运行环境系统调用:内核的接口公共函数库与shell:构建在系统调用之上,shell是一个特殊的应用程序,为其他应用程序提供了一个接口广义讲法用户登录口令文件在/etc/passwd文件中,具体格式如下分别对应用户名:口令:数字用户ID:用户组ID:注释字段:开始目录:对应的shell程序shellshell是一个命令解释器,读取用户输入的命令,然后执行命令是交互shell,如果从文件输入则为shell脚本,一
C++_泛型编程与标准库(十)——set与map C++_泛型编程与标准库(十)——set与map参考:《侯捷泛化编程与标准库》、GNU9.3.0,vs2019图中标红部分为自己的笔记理解SETGNU 9.3.0的set部分代码如下,图中可以看到_Rb_tree重定义为_Rep_type,由_Rep_type再定义一个红黑树,其中key和value一样vc2019的set部分代码如下,进一步观察_Tree可以看到,vc2019少了一个模板参数,而实现方法就在_Tree的模板参数也是一个泛型模板,在_Tset_traits中实现key就
C++_泛型编程与标准库(九)——红黑树的使用 C++_泛型编程与标准库(九)——红黑树的使用参考:《侯捷泛化编程与标准库》、GNU9.3.0,vs2019图中标红部分为自己的笔记理解 struct _Rb_tree_node_base { typedef _Rb_tree_node_base* _Base_ptr; typedef const _Rb_tree_node_base* _Const_Base_ptr; _Rb_tree_color _M_color; _Base_ptr _M_p
C++_泛型编程与标准库(八) C++_泛型编程与标准库(八)参考:《侯捷泛化编程与标准库》、GNU9.3.0,vs20191、arrayGNU 2.9的写法array GNU9.3.0部分源码array没有ctor,没有dtor,包括vs2019也是template<typename _Tp, std::size_t _Nm> struct __array_traits { typedef _Tp _Type[_Nm];//_Type为数组名类型,通过其定义出来就是一个数
shell笔记 shell笔记1、shell基础命令与逻辑语言共存,类似于C语言&& ||具有逻辑判断, &&是前一个命令失败,后面不会执行,||是前一个命令失败,后面命令若能执行则执行。;不影响命令执行`mkdir /home/1/2/3 &&echo "OK"`#两条命令都不会执行`mkdir -p /home/1/2/3 &&echo "OK"`#会显示ok,因为-p表示如果没有目录会自动创建,-p表示递归创建输出命令ec
C++11 C++11参考侯捷C++11&14,《C++ primer》1、Spaces in Template ExpressionsC++2.0之前的模板在使用时,如果模板参数最后一个符号是> 需要用空格将其与最后的>隔开,否则编译器会把模板参数的最后一个>当成操作符vector<list<int> >//旧vector<list<int>>//新 2、nullptr、nullptr_t与NULLstd::nu
C++_STL标准库——容器 C++_STL标准库——容器参考:cplusplus.com - The C++ Resources Network,VC2019,《C++primer》,《侯捷泛化编程与标准库》1、C++_STL——array(C++11)2、C++_STL——list(and forward_list)3、C++_STL——deque and vector4、C++_STL——queue(and priority_queue)5、C++_STL——stack6、C++_STL——map、multima