文章目录

  • 三、C++预处理器
    • (1)头文件名
    • (2)名称空间

三、C++预处理器

​ C++和C语言一样,也使用一个预处理器,在程序进行主编译之前对源文件进行处理,有些C++实现使用翻译器程序将C++程序转化为C语言程序,虽然翻译器也是一种预处理器,但是这里不讨论这种预处理器。而是只讨论以#打头的预处理指令。

(1)头文件名

​ C++中预处理指令#include所包含的文件名,被称为头文件(header file),C++编译器自带了很多头文件,每个头文件都支持一些特定的工具。**C语言的传统是头文件使用拓展名.h,但是C++的用法变了,C++对老式的C语言头文件保留了拓展名.h(C++程序仍然可以使用这种头文件),而C++头文件则没有拓展名。**有些C语言头文件被转化成C++头文件,这些头文件被重新命名,去掉了拓展名.h(使之称为C++的风格的名称),并在文件名前面加上前缀c(表明来自C语言),例如,C++版本的math.hcmath

(2)名称空间

​ 名称空间支持是一项C++特性,旨在编写大型程序以及将多个厂商的现有代码组合起来的程序时更加容易,有助于组织程序。按照这种方式,类、函数和变量都是C++编译器的标准组件,它们现在都被放置在名称空间std中。仅当头文件没有扩展名h时,情况才是这样的。这意味着在iostream中定义的用于输出的cout变量实际上是std::cout,而endl变量实际上是std::endl。为了简化这种操作,可以使用==using==编译指令使得std名称空间中的所有名称都可用,而不必再添加std::前缀。例如:

#include <iostream>            //未使用using编译指令
std::cout << "Hello World!";
std::cout << std::endl;
#include <iostream>        //使用using编译指令
using namespace std;
cout << "Hello World!";
cout << endl;
using namespace std;

这条using编译指令使得std名称空间中的所有名称都可用。这其实是一种偷懒的做法,在大型项目中有一个潜在的问题。更好的方法是,只使所需的名称可用,这可用通过使用using声明来实现:

using std:: cout;            //make cout avaliable
using std:: endl;           //make endl avaliable

用这些编译指令后,便可用使用cout、endl,而不必加上std::前缀。

​ 当前通行的理念是,只让需要访问名称空间std的函数访问它是最好的选择,下面是不同的访问std名称空间的方法:

1、将using namespace std;放在函数定义之前,让文件中所有的函数都能够使用名称空间std中所有元素。

2、将using namespace std;放在特定的函数定义中,让该函数能够使用名称空间std中的所有元素。

3、在特定的函数中使用类似using std::cout;这样的指令,而不是使用using namespace std;让该函数能够使用特定的元素,如cout

4、完全不使用编译指令using,而在需要使用名称空间std中的元素时,使用前缀std::

初识Cpp之 三、Cpp预处理器相关推荐

  1. C语言入门教程||C语言 文件读写||C语言 预处理器

    C语言 文件读写 本章我们将介绍 C 程序员如何创建.打开.关闭文本文件或二进制文件. 一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节.C 语言不仅提供了访问顶层的函数,也提供了底层 ...

  2. 再谈 CSS 预处理器

    CSS 预处理器是什么?一般来说,它们基于 CSS 扩展了一套属于自己的 DSL,来解决我们书写 CSS 时难以解决的问题: 语法不够强大,比如无法嵌套书写导致模块化开发中需要书写很多重复的选择器: ...

  3. CSS预处理器——Sass、LESS和Stylus区别及联系

    一.什么是CSS预处器 CSS预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为CSS增加了一些编程的特性,将CSS作为目标生成文件,然后开发者就只要使用这种语言进行编码工作.通俗的说 ...

  4. CSS预处理器-Sass、Less和Stylus-介绍和使用

    发挥CSS预处器的作用是一种很有挑战性的事情.CSS预处器有不同的语言,有不同的语法和功能. 在这篇文章中,我们将介绍三种不同CSS预处器的蛮量.功能以及他们的好处--sass.less 和stylu ...

  5. css预处理器:less和sass认知

    一.什么是Less/Sass? LESS是一个CSS预处理器,可以为网站启用可自定义,可管理和可重用的样式表. LESS是一种动态样式表语言,扩展了CSS的功能. LESS也是跨浏览器友好. SASS ...

  6. CSS预处理器的对比 — Sass、Less和Stylus

    本文根据Johnathan Croom的<sass vs. less vs. stylus: Preprocessor Shootout>所译,整个译文带有我们自己的理解与思想,如果译得不 ...

  7. CSS预处理器 -- stylus 、sass、less

    在写CSS的时候我们会发现,为了兼容浏览器等原因,我们往往需要写很多冗余的代码,CSS预处理器就是为了解决CSS的这些问题,简化CSS代码的编写. 目前最主流的CSS预处理器是LESS.SASS和St ...

  8. CSS面试复习(三):预处理器、工程化方案、三大框架中的CSS

    一.预处理器 1.介绍 基于CSS的另一种语言.通过工具编译成CSS.添加了很多CSS不具备的特性.能提升CSS文件的组织 2.less嵌套 3 .sass嵌套 4. less变量 5.sass变量 ...

  9. 您详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus

    2019独角兽企业重金招聘Python工程师标准>>> CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS ...

  10. 初识css预处理器:Sass、LESS

    这篇文章是初步介绍css预处理的,详细学习请移步官网~ sass中文文档:https://www.sass.hk/docs less中文文档:http://lesscss.cn/ 什么是css预处理器 ...

最新文章

  1. 雨季来临 对车辆涉水说“NO”
  2. 软考已报名可以更改科目吗
  3. 1104: 求因子和(函数专题)
  4. php养老院管理系统,XYCMS养老院建站系统 v3.8
  5. 悼念512汶川大地震遇难同胞——选拔志愿者【博奕】
  6. 2022年全新美观的春节倒计时代码
  7. Starling GodRay 效果实现
  8. Redis 6.0 源码阅读笔记(5) -- List 数据类型源码分析
  9. 计算机控制系统的框图,计算机控制系统原理框图.doc
  10. 59道CSS面试题(附答案)
  11. 国外永久免费5G大容量网盘--SugarSync
  12. VMware 虚拟机的使用
  13. HDU6287 口算训练 【两种优化版分解质因数】【二分下标】
  14. 工作第九周:勇敢的少年,快去创造奇迹!
  15. 【GANs学习笔记】(十九)CycleGAN、StarGAN
  16. 用Cheat Enginee(CE)分析“初级”、“中级”和“高级”的棋盘内存地址范围
  17. 更省密令是什么?更省密令填什么
  18. is.gd免费网址压缩
  19. 要报销的发票如何批量下载打印
  20. Java手机游戏开发简明教程 (SunJava开发者认证程序员 郎锐)

热门文章

  1. TIA protal与SCL从入门到精通(5)——函数终止跳转处理
  2. panic: reflect.Value.Interface: cannot return value obtained from unexported field or method
  3. php形状特征提取方法,LowB沙箱-PHP动态特征提取
  4. 【数据结构】(六)树与二叉树
  5. swift-UIStoryboard故事板
  6. 西南地区首次大型“社区面基 Party”落幕,TiDB TechDay 下一站深圳见!
  7. 修改hosts解决多网页加载失败/不显示/视频无法观看等问题
  8. C++SLT入门简介
  9. 扩展天气图标skycons.js, 将10个扩展到20个
  10. 【排序算法】Java版十大经典排序算法实现以及测试结果