首页 > 编程语言 >c++宏

c++宏

时间:2023-05-21 23:02:16浏览次数:55  
标签:std 头文件 int c++ using include


_Pragma once操作符



#pragma是一条预处理指令,简单的说他是用来向编译器传达语言标注以外的一些信息


例如我们在头文件中定义了如下语句


#pragma once


则表示该指令会指示编译器该头文件只会被编译一次(保证头文件只被include一次)


而c++11中定义了与#pragma功能相同的操作符_Pgrama,它的表示形式如下


_Pragma(字符串字面量)


其使用方法和sizeof一样将字符串字面量作为参数卸载括号内即可,例如下面的语句和上面的效果一样


_Pragma("once");



注意:_Pragma()在vs2015中不可用



变长参数的宏定义以及_VA_ARGS_


变长参数的宏定义中参数列表中的最后一个参数为省略号,而预定义宏_VA_ARGS_则可以在宏定义的实现部分替换省略号所代表的字符,相关代码举例如下

//注意此段代码在vs2015中不可实现,因为_VA_ARGS_未定义
#include<iostream>


 using namespace std;


 #define pr(...) printf(_VA_ARGS_)


 int main()
 {
for (int i = 0; i < 9;i++)
{
pr("执行次数\n" );
cout << i << endl;
}


system("pause");
 }

查看编译器中long long 值的最大值和最小值的方法


#include<iostream>


 using namespace std;


 int main()
 {
cout<< LONG_MIN<< "_" << LLONG_MAX   << endl;


system("pause");
 }


_cplusplus宏

用于c和c++的混编


#include<iostream>


 using namespace std;


 #ifdef _cplusplus
 extern "C" {
 #endif
//一些代码
 #ifdef _cplusplus


 }
 #endif


断言函数 : assert()

它的作用是帮助程序开发者快速定位到那些违反了某些前提条件的程序错误,在c++中,标准在<cassert>或<assert.h>头文件中为程序员提供了assert宏,用于在程序运行时进行断言,相关举例如下:

#include<iostream>
 #include<cassert>


 using namespace std;


 int function(int m)
 {
assert(m != 0);
return 9 / m;
 }
 int main()
 {
int a = function(0);
 }

标签:std,头文件,int,c++,using,include
From: https://blog.51cto.com/u_16063698/6320547

相关文章

  • C++ 测试框架 GoogleTest 初学者入门篇 甲
    *以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/BS_u9A4EY50y4vDDuxkCAQ开发者虽然主要负责工程里的开发任务,但是每个开发完毕的功能都是需要开发者自测通过的,所以经常会听到开发者提起单元测试的话题。那么今天我就带大伙......
  • 【重学C++】02 脱离指针陷阱:深入浅出 C++ 智能指针
    文章首发【重学C++】02脱离指针陷阱:深入浅出C++智能指针前言大家好,今天是【重学C++】系列的第二讲,我们来聊聊C++的智能指针。为什么需要智能指针在上一讲《01C++如何进行内存资源管理》中,提到了对于堆上的内存资源,需要我们手动分配和释放。管理这些资源是个技术活,一不小......
  • 详解C++STL—函数对象
    1、函数对象1.1、函数对象概念概念:重载函数调用()操作符的类,其对象常称为函数对象函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数1.2、函数对象的使用特点:函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值函数对象超......
  • 为什么只有Python可以爬虫,C++可以吗?
    Python(英国发音:/ˈpaɪθən/;美国发音:/ˈpaɪθɑːn/),是一种广泛使用的解释型、面向对象、动态数据类型的高级程序设计语言。Python支持多种编程范型,包括结构化、过程式、反射式、面向对象和函数式编程。它拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且其本身拥有一个......
  • c++打卡第三十二天
    以点类Point及平面图形类Plane为基础设计圆类Circle一、问题描述以点类Point及平面图形类Plane为基类公有派生圆类Circle,main(void)函数完成对其的测试。Point类结构说明:Point类的数据成员包括:①私有数据成员:X坐标x(double型),Y坐标y(double型)。Point类成员函数包括:①有参构造......
  • C/C++程序设计课设题[2023-05-20]
    C/C++程序设计课设题[2023-05-20]ATM仿真系统-薛景背单词-叶水仙-理科实验班电信优惠套餐推荐系统的设计与实现-朱立华-通信工程多媒体文件管理及检索系统-刘林峰-广播电视工程公交路线自动化选择系统实现-张勤-测控技术与仪器基于朋友圈的商品推荐-汪云云-自动化基于数据......
  • vscode c++链接mongo数据库的操作随笔
     1、需要先下载安装各种软件及依赖1)c++链接mongo数据库需要涉及到这几个库,而且版本直接有范围boostcmakelibbsonmingwmongo-copensslgccmongocxx  2、vscode安装,用vscode的好处就是会省事情很多1)下载安装vscode2022版本2)也可以用vscode进行安装上面的各种类库......
  • 【重学C++】01| C++ 如何进行内存资源管理?
    文章首发【重学C++】01|C++如何进行内存资源管理?前言大家好,我是只讲技术干货的会玩code,今天是【重学C++】的第一讲,我们来学习下C++的内存管理。与java、golang等自带垃圾回收机制的语言不同,C++并不会自动回收内存。我们必须手动管理堆上内存分配和释放,这往往会导致内存泄漏......
  • C++中动态和静态库(dll) 使用(转)
    目录:1.lib与dll介绍2.动态库的生成与使用3.静态库的生成与使用 1.首先介绍下静态库(静态链接库,.lib文件),动态库*(动态链接库,.dll文件)的概念,两者都是代码共享的方式.静态链接:静态链接是指在编译的时候就把模块的内容加载进来一起编译,这样编出来的exe文件包含了模块......
  • C/C++学生宿舍管理系统[2023-05-20]
    C/C++学生宿舍管理系统[2023-05-20]课程报告任务书题目学生宿舍管理系统主要内容用C语言开发一个简单的学生宿舍管理系统。实现宿舍信息管理,用户信息管理以及住宿管理功能。【数据结构】1.宿舍信息。包括:宿舍编号、所属楼号,所属楼层、面积、床位数等。2.登陆账号信息。包括:......