首页 > 编程语言 >C/C++预处理命令

C/C++预处理命令

时间:2022-11-22 13:45:37浏览次数:33  
标签:__ 编译 macro 代码 C++ 命令 编译器 预处理

  1. 防止重复包含头文件


#ifndef __文件名大写_H__
#define  __文件名大写_H__
#endif //  __文件名大写_H__

// c++
pragma once 较老编译器不支持,

以上两种方法都行。
优缺点:

  1. 第一点,可以针对部分代码,所有编译器都支持。缺点时要写很多
  2. 第二点,代码简洁,缺点较老编译器不支持。
#if, #ifdef, #ifndef, #else, #elif, #endif 
// 这些命令让编译器进行简单的逻辑控制. 当一个文件被编译时, 你可以使用这些命令使某些行保留或者是去处. 

    #if expression			//如果表达式(expression)的值是"真"(true),那么紧随该命令的代码将会被编译. 

    #ifdef macro			//如果"macro"已经在一个#define声明中定义了, 那么紧随该命令的代码将会被编译. 

    #ifndef macro			//如果"macro"未在一个#define声明中定义, 那么紧随命令的代码将会被编译. 

//一些小边注: 命令#elif是"elseif"的一种缩写,并且他可以想你所意愿的一样工作. 你也可以在一个#if后插入一个"defined"或者"!defined"以获得更多的功能. 

//这里是一部分例子: 
    #ifdef DEBUG
      cout << "This is the test version, i=" << i << endl;
    #else
      cout << "This is the production version!" << endl;
    #endif

	//你应该注意到第二个例子比在你的代码中插入多个"cout"进行调试的方法更简单. 

标签:__,编译,macro,代码,C++,命令,编译器,预处理
From: https://www.cnblogs.com/web-linux-qin/p/16914725.html

相关文章

  • Vscode/Sublime C++ 打印中文乱码问题解决
    #include<iostream>usingnamespacestd;#ifdef_WIN32#include<windows.h>#endifintmain(){#ifdef_WIN32//控制台显示乱码纠正SetConsoleOutp......
  • 用C++写一遍linux socket通信过程
    要想深刻理解一些技术的底层,我还是觉得非用用c/c++写一遍的比较好。这其中的原因相信懂的人都懂。回忆一下上学时候在c语言课堂上的激动劲,如今感觉对c的理解真的都是那时候......
  • Android设计模式系列(7)--SDK源码之命令模式
    命令模式,在.net,java平台的事件机制用的非常多,几乎每天都与之打交道。android中对我印象最深的就是多线程多进程的环境,所以必然大量使用到Runbable,Thread,其实用的就是最......
  • Android命令行查看内存情况
    在学习如何查看内存前先来介绍几个概念VSS-VirtualSetSize虚拟耗用内存(包含共享库占用的内存)RSS-ResidentSetSize实际使用物理内存(包含共享库占用的内存)PSS......
  • C++11
    longlong超长整形 C++11longlong超长整形详解(biancheng.net)    待更。。。......
  • 基本的Dos命令
    基本的Dos命令打开dos命令窗口1.win+R,输入cmd1.文档管理器地址栏输入cmd1.开始菜单>windows系统>命令提示符基本命令切换盘符切换盘符D:查看当前目录下所有......
  • 【C++/STL】0.容器概述
    文章目录​​一、容器分类​​​​(1)序列性容器​​​​(2)关联式容器​​​​(3)容器适配器​​​​二、容器共性​​​​三、容器比较​​一、容器分类(1)序列性容器​​序列式容......
  • 【C++/STL】2. vector向量
    vector与常用的数组类似,占用连续内存空间,对随机存取支持很好。可以类似数组用下标访问,也可以类似字符串用​​vector.at()​​成员函数访问vector是尾部开口设计,类似栈。从......
  • C/C++中拆分long/float/double等数据并重新组合的方法
    在嵌入式编程时,常常会遇到需要做数据通信的场景。单片机往往只支持一次8位的数据传递,为了传输较长的数据类型,只能先在主机将数据拆分,再在从机重新组合,这里介绍一些实用的数......
  • 前端使用scp命令部署到服务器
    由于没有弄自动部署环境,每次打包后,不是要把代码发给后端就是发给运维,比较麻烦。所以想到了命令部署。弄起来也很简单,使用nodejs的scp即可以vue-cli创建的vue2项目为例......