C/C++
文章平均质量分 80
Zhninu
...........
展开
-
C++ 11 - auto和decltype
autoauto :编译器通过初始值来进行类型推演,获得定义变量的类型。auto 定义的变量必须有初始值。个人理解:简化书写,提高编码效率 auto 是一个很强大的工具,但有它的两面性。不加选择地随意使用auto,会带来代码可读性和维护性的严重下降。在使用 auto 的时候,一定要权衡好它带来的“价值”和相应的“损失”。使用:(1)auto推断基本类型(一条语句一个变量)//由val_1 和val_2相加的结果可以推断出item的类型auto item = val_1 + val_2原创 2022-04-27 16:57:13 · 1005 阅读 · 0 评论 -
make、makefile、cmake及相关内容
最近在学gn和ninja,设计到了makefile相关的内容,相关概念有些记不太清楚了,重新查阅了一下,顺便留个笔记方便以后查看。开始的时候先简单介绍一下程序的生命周期,源码到可执行程序,一般需要经过四个过程:上图截取自《深入理解计算机系统》,图中说明了,一个程序要从源文件变为一个可执行的机器文件,需要至少四个步骤(python之类的语言还有一个解释过程)。举个简单的例子,我们要在屏幕上面打印一句“hello world!”,除去编辑的过程,源文件先要经过预处理得到*.i文件,然后经过编译得到*.s原创 2022-03-17 09:09:26 · 230 阅读 · 0 评论 -
C++:LIB和DLL的区别与使用
共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包含在运行时定位DLL函数的可执行代码所需的信息。静态链接使用静态链接库,链接器从静态链接库LIB获取所有被引用函数,转载 2022-01-07 16:18:39 · 2005 阅读 · 0 评论 -
Google 开源项目风格指南 (中文版)
Google开源项目风格指南,包含如下:Google C++ 风格指南 Google Objective-C 风格指南 Google Python 风格指南 Google JavaScript 风格指南 Google Shell 风格指南 Google JSON 风格指南 Google TypeScript 风格指南在线文档托管在 ReadTheDocs:http://zh-google-styleguide.readthedocs.io/en/latest/ 中文风格指南 GitHu.原创 2021-12-30 14:13:03 · 2556 阅读 · 0 评论 -
C++ 函数模板 & 使用函数模板出现“无法解析的外部符号”的问题
一、C++ 函数模板函数模板是通用的函数描述,它们使用泛型来定义函数,其中的泛型可用具体的类型替换。通过将类型作为参数传递给模板,可使编译器生成该类型的函数。由于模板允许以泛型(而不是具体类型)的方式编写程序,因此有时候也被称为通用编程。在标准C++98添加关键字typename之前,C++使用关键字class来创建模板。在C++11中,可以将class替换为typename。template<class T>void swap(T&a, T&b){ T tem原创 2021-12-16 13:19:03 · 5164 阅读 · 1 评论 -
VS 无法打开预编译头文件:“*.pch”的错误
stdafx.h在使用过Visual Studio,VC++的时候,我们新建工程的时候往往在每个.cpp文件的最前面都有一个#include "stdafx.h"。这个文件有他的作用,下面介绍其原理和使用过程中会遇到的一些问题。简介stdafx,全称Standard Application Framework Extensions,标准引用框架扩展。其实就是头文件预编译,我们知道C++文件进行编译时,需要先进行预编译,包括宏定义替换,条件编译以及#include文件包含。这里就是将一个工程转载 2021-11-16 14:27:24 · 8178 阅读 · 1 评论 -
关于extern “C“(详细剖析)
目录引言extern “C”的前世今生小心门后的未知世界c++调用c的方法c调用c++的方法引言在你工作过的系统里,不知能否看到类似下面的代码。这好像没有什么问题,你应该还会想:“嗯⋯是啊,我们的代码都是这样写的,从来没有因此碰到过什么麻烦啊~”。你说的没错,如果你的头文件从来没有被任何C++程序引用过的话。这与C++有什么关系呢? 看看__cplusplus(注意前面是两个下划线) 的名字你就应该知道它与C++有很大关系。__cplusplus是一个C++规范规定的预定义宏。你可以信任的是:所转载 2021-11-16 13:59:09 · 1650 阅读 · 0 评论 -
Window下程序计时
【C/C++】计时函数比较目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但是各种计时函数的精度不一样.下面对各种计时函数,做些简单记录.方法1time()获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系转载 2021-11-12 12:43:14 · 436 阅读 · 0 评论 -
C++ :const用法
#include<iostream>using namespace std;int main(){ int a1=3; ///non-const data const int a2=a1; ///const data int * a3 = &a1; ///non-const data,non-const pointer const int * a4 = &a1; ///const data,non-const point.转载 2021-11-10 11:37:18 · 171 阅读 · 0 评论 -
C++引用与指针
引用某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;#include <iostream>#include <Windows.h>using namespace std;int main(void){ int a=10; printf("a=%d\n",a); int &b=a; //a的别名 printf("b=%d\n",b); a=100; printf("转载 2021-10-14 11:09:11 · 144 阅读 · 0 评论 -
Const和指针
Const一个C语言(ANSI C)的关键字。限定一个变量不允许被改变,产生静态作用。Const在一定程度上可以提高程序的安全性和可靠性。Const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被修改的。Const指针Const指针是指针变量的值一经初始化,就不可以改变指向,初始化是必要的。其定义形式如下:type *const 指针名称Const与指针的组合const int * var1; //指向整形常量的指针,它指向的值不能修改int..原创 2021-10-14 11:02:25 · 473 阅读 · 0 评论 -
C/C++: do...while(0)的妙用
在C++中,有三种类型的循环语句:for, while, 和do…while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do…while相对不受重视。但是,最近在读我们项目的代码时,却发现了do…while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。do…while(0)消除goto语句。...转载 2020-12-24 11:17:34 · 101 阅读 · 0 评论 -
c++: 调用的函数前加 “::“
#include <iostream>using namespace std;void func(){ cout<<"global function"<<endl;}class A{public: int print() { ::func(); cout<<"class A "<<endl; } void func() { cout<转载 2020-12-24 10:09:30 · 722 阅读 · 0 评论