[置顶] NO.4 使用预处理器进行调试

时间:2022-02-10 08:48:03

《c++ primer》第四版 p190

********************************************************************************************************************************************************************************************

在调试程序时,会在程序里加一些代码用来观察测试程序允许的情况。当程序调试完毕后,需要注释掉或者删除那些代码,有时候这个工作会显得略微的繁琐。

这里有一个好方法——利用预处理器来帮助调试。

下面给出代码

#include <iostream>
using std::cout;
int main (void)
{
#ifndef NDEBUG
cerr << "starting main"<< endl;
#endif
//注意sizeof()返回值的不同
int x[10];
int *p = x;
cout << sizeof(x) <<" "<< sizeof(*x) << endl;
cout << sizeof(p) <<" "<< sizeof(*p) << endl;
return 0;
}

注意这个

#ifndef NDEBUG
cerr <<"strting main"<<endl;
#endif

下面编译执行

g++ test.cpp
./a.out

结果如下

starting main
40 4
8 4

因为NDEBUG没有定义,所以程序执行了#ifndef 和#endif 之间的代码。

我们可以通过定义NDEBUG预处理变量,来删除#ifndef #endif之间的代码。

g++ -DNDEBUG test.cpp

然后执行结果如下

./a.out
40 4
8 4

这样我们就很方便的删除了这调试的语句。

[置顶] NO.4 使用预处理器进行调试的更多相关文章

  1. Harp – 内置常用预处理器的静态 Web 服务器

    Harp 是一个基于 Node.js 平台的静态 Web 服务器,内置流行的预处理器,支持把 Jade, Markdown, EJS, Less, Stylus, Sass, and CoffeeSc ...

  2. JavaScript中hoisting&lpar;悬置&sol;置顶解析&sol;预解析&rpar; 实例解释,全局对象,隐含的全局概念

    JavaScript中hoisting(悬置/置顶解析/预解析) 实例解释,全局对象,隐含的全局概念 <html> <body> <script type="t ...

  3. webpack learn1-配置项目加载各种静态资源及css预处理器2

    继续在webpack.config.js中配置loader { test:/\.css$/, use: [ 'style-loader', 'css-loader' ] },{ test:/\.(jp ...

  4. Microsoft Visual C&plus;&plus; 6&period;0预处理器参考手册

    返回总目录 Microsoft Visual C++ 6.0 预处理器参考手册 目录引言........................................................ ...

  5. CSS预处理器Sass、LESS 和 Stylus

    CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 首先我们 ...

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

    CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 首先我们 ...

  7. 160907、CSS 预处理器-Less

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

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

    [大伽说]如何运维千台云服务器 »   CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.L ...

  9. QT窗口置顶&sol;真透明&sol;背景模糊&sol;非矩形&sol;跳过任务栏分页器&sol;无边框&sol;无焦点点击&sol;焦点穿透

    qt 窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透 窗口置顶qt 里是 setWindowFlags(Qt::WindowStaysOnTopHint)kde 里 ...

随机推荐

  1. Web&period;config配置文件详解

    整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <?xml v ...

  2. css ul li 水平布局问题

    可以有俩种方法,暂时只用float:left:   找到每一个li进行水平浮动 #hd_nav li{ border-right: 1px solid rgba(255,255,255,0.2); f ...

  3. JAVA基础1——字节&amp&semi;位运算

    占用字节数 & 取值范围 Java一共有8种基本数据类型(原始数据类型): 类型 存储要求 范围(包含) 默认值 包装类 int 4字节(32位) -2^31~ 2^31-1 0 Intege ...

  4. Yii2&period;0 上使用 redis

    1. 通过composer进行安装,到项目根目录cmd运行 php composer.phar require --prefer-dist yiisoft/yii2-redis或者添加 "y ...

  5. select样式设计

    举例: select { color: blue; /*去掉边框*/ border: none; outline: none; /*去掉箭头*/ -webkit-appearance: none; / ...

  6. Redis的安装和客户端使用注意事项

    一.安装 (1)linux环境下: 获得软件包: wget http://download.redis.io/releases/redis-4.0.1.tar.gz 解压:tar -zxvf redi ...

  7. Centos 安装R

    1 下载R源代码 原码下载地址https://cloud.r-project.org/https://cloud.r-project.org/src/base/R-3/R-3.4.2.tar.gz 2 ...

  8. linux命令总结vmstat命令

    一.简介 vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/ ...

  9. Object类型转换为long或者Long

    1.转换为long Object o = new Object();long l = Long.valueOf(String.valueOf(o)).longValue(); 2.转换为Long Ob ...

  10. centos7里没有ifcfg-eth0只有 ifcfg-ens33&lpar;没有Eth0网卡&rpar;

    https://www.cnblogs.com/feixiangtk/p/6819118.html CentOS7系统安装完毕之后,输入ifconfig命令发现没有eth0,不符合我们的习惯.而且也无 ...