首页 > 编程语言 >《c++徒步》宏篇

《c++徒步》宏篇

时间:2023-05-06 11:22:04浏览次数:49  
标签:__ 编译 WIDTH 宏篇 MAX c++ 徒步 预处理 define

预处理命令

参考链接:https://blog.csdn.net/akpe80900/article/details/102070084

预处理命令是什么

预处理语句,预处理语句是以#为起始标记,后面跟上预处理关键词。
预处理功能,例如,宏定义、文件包括、条件编译等

define

语法:

//用来定义宏
#define

使用:

//定义常量
#define MAX_WIDTH 100
//定义宏函数
#define getmax(a,b) a>b?a:b

undef

语法:

//用来取消宏
#undef

使用:

#define MAX_WIDTH 100
#undef MAX_WIDTH

ifdef ifndef

//只有定义所指宏情况下,才被编译
//#ifdef
//与上述相反
#ifndef

用法:

#ifdef MAX_WIDTH
char str[MAX_WIDTH];
#endif

#ifndef MAX_WIDTH
#define MAX_WIDTH 100
#endif

if elif else endif

//#if #elif(即else if) #else
// 判断条件为真时,才被编译
//#endif
// endif为结尾

用法:

#if MAX_WIDTH>200
#undef MAX_WIDTH
#define MAX_WIDTH 200

#elsif MAX_WIDTH<50
#undef MAX_WIDTH
#define MAX_WIDTH 50

#else
#undef MAX_WIDTH
#define MAX_WIDTH 100
#endif

char str[MAX_WIDTH];

pragram

用来配置编译器,本次不过多描述。

include

最常见的预处理命令

//1先在当前目录下寻找,然后再到默认路径下
#include "file"
//2直接在默认路径下找
#include <file>

line

当编译发生错误时,使用#line显示出错信息

#line 1 "assigning variable"
int a?;

报错会显示:"assigning variable", line 1 。

error

中断编译返回一个出错信息。

#ifndef __cplusplus
#error A C++ compiler is required
#endif

这个例子中如果__cplusplus没有被定义就会中断编译过程。

常见的宏

LINE

正在编译行对应源文件的行数

__LINE__

cout << "This is the line number "<< __LINE__;

FILE

被编译源文件的名称

__FILE__

DATA TIME

存储编译开始的日期,“Mmm dd yyyy”格式

__DATA__

存储编译开始的日期,“hh:mm:ss”格式

__TIME__

cplusplus

整数值,所有C++编译器都定义了这个常量为某个值。如果这个编译器是完全遵守C++标准的,它的值应该等于或大于199711L,具体值取决于它遵守的是哪个版本的标准。

__cplusplus

cout << "The compiler gives a "<<"__cplusplus value of "<< __cplusplus;

标签:__,编译,WIDTH,宏篇,MAX,c++,徒步,预处理,define
From: https://www.cnblogs.com/fusio/p/17376701.html

相关文章

  • 高速爬过C++(3级)
    3级了!!不管做什么,我们都是在想适应所处的环境,真实的或者虚拟的。所以一个好的工具就该让我们在适应方面如虎添翼。因此C++程序就是个能接收环境的输入,然后经过处理,再输出到环境而环境里有什么,不外乎是万物,万物如何用C++来表达,或者C++里用什么来表示万物c++里用类型和变量变......
  • [Luogu-P1007]题解(C++)
    PartIPreface原题目(Luogu)PartIISketch给定一个正整数\(L\),表示独木桥长度。给定一个正整数\(N\),表示桥上士兵的数量。给定\(N\)个整数,分别表示每个士兵的坐标。规定走到\(0\)坐标或\(L+1\)的位置为下桥,两个士兵相遇时不能走过去,他们会各自回头走。求出所有士......
  • 高速爬过C++(2级)
    恭喜你升到2级,打怪不容易,虽然别的地方打一个怪可以升到99级!当我们用铅笔在白纸上画画时,会发生什么?我们弄脏了白纸。为啥会弄脏,原来是摩擦将铅笔粉留在了白纸上。虽然我们可以只关心画出什么样的图案而不管那些什么复杂的物理现象但是有时力道、速度也会影响成画的效果。所以......
  • 高速爬过C++(0级)
    魔镜:你想要什么?我:什么都想要魔镜:你有什么?我:什么都没有魔镜:我有的,你已经拥有。 掠过一本C++教程目录,似懂非懂的概念名称撞击大脑,让我两眼冒金星。魔镜什么都没有,所以我也什么都没有,心里默念了好几遍。我从0级开始闯入这本C++教程,虽然很久很久以前玩过,多少级?不说不说,好汉不......
  • [AtCoder-AT_ABC108_B]题解(C++)
    PartIPreface原题目(Luogu)原题目(AtCoder)PartIISketchPartIIIAnalysis观察这道题,我们很容易想到,必须推导出\(x1,y1,x2,y2\)与\(x3,y3,x4,y4\)之间的关系。我们观察下图。可以发现:\(\begin{aligned}\begin{cases}x3=x2-(y2-y1)\\y3=y2+(x2-......
  • [CodeForces-143A]题解(C++)
    PartIPreface原题目(Luogu)原题目(CodeForces)PartIISketch设有一个\(2\times2\)的棋盘,上面可以填入\(1-9\)的数字。给出\(6\)个数字,为每行每列以及每个对角线上的数字之和,求相应的摆放方式,无解输出\(-1\)。PartIIIAnalysis观察此题数据规模,不难发现数据......
  • [CodeForces-1104A]题解(C++)
    PartIPreface原题目(Luogu)原题目(CodeForces)PartIISketch给定一个整数\(n\)。将\(n\)拆分成一个数列\(a_1,a_2,a_3,\dots,a_m\)。使得\(\sum\limits_{k=1}^{m}a_k=n\),每个\(a_i\in[0,9]\)且数列中不相同的数的数量尽量少。PartIIIAnalysis我们很容易......
  • c++打卡第十九天
    一、问题描述 二、设计思路。①、定义总鱼数为x条,这个x我们需要使用double类型定义,②、第一次剩余x1=x-(x/2+1/2);第二次剩余x2=x1-(x1/3+1/3)第三次剩余x3=x2-(x2/4+1/4)第四次剩余x4=x3-(x3/5+1/5)x4=11;③、我们可以使用循环实现此方程。即x-(x/j+1/j);③、使用数组存储每次卖鱼......
  • C++类模板(模板类)
    参考资料:C++类模板(模板类)详解(biancheng.net) 人们需要编写多个形式和功能都相似的函数,因此有了函数模板来减少重复劳动;人们也需要编写多个形式和功能都相似的类,于是 C++ 引人了类模板的概念,编译器从类模板可以自动生成多个类,避免了程序员的重复劳动。例如,在《C++运算符重......
  • C++11生成随机数
    一、random_device类classrandom_device{public:typedefunsignedintresult_type;//constructor构造函数explicitrandom_device(conststd::string&token="");//propertiesstaticresult_typemin();staticresult_typemax()......