个人觉得单步调试麻烦且费时间,所以我两年时间里F4+watch基本没怎么用过,但由于"查看变量的值"这个需求总是存在的,并且调试时通常需要显示很多东西,printf写起来又比较蛋疼,恰巧在c++11上知道了可变参数模板这个新的东西,于是果断拿过来写debug代码了。

本地调试时用的,写在头文件里,然后只在本地包含它,OJ上忽略。[local.h] =>

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  1. #ifndef _local
  2. #define _local
  3. namespace Debug {
  4. void print() {
  5. cout << endl;
  6. }
  7. template<typename T>
  8. void print(const T t) {
  9. cout << t << endl;
  10. }
  11. template<typename F, typename...R>
  12. void print(const F f, const R...r) {
  13. cout << f << " ";
  14. print(r...);
  15. }
  16. template<typename T>
  17. void print(T*p, T*q) {
  18. int d = p < q ? : -;
  19. while(p != q) {
  20. cout << *p << ", ";
  21. p += d;
  22. }
  23. cout << endl;
  24. }
  25. template<typename T1, typename T2>
  26. void print(pair<T1, T2> x) {
  27. print("first = \"", x.first, "\" second = \"", x.second, "\"");
  28. }
  29. }
  30.  
  31. class Timer {
  32. private:
  33. clock_t _start;
  34. clock_t _end;
  35.  
  36. public:
  37. Timer() { start(); }
  38. void start() {
  39. _start = clock();
  40. }
  41. double get() {
  42. _end = clock();
  43. double usedtime = double(_end - _start) / CLK_TCK;
  44. cout << "used time: " << usedtime << " s\n";
  45. return usedtime;
  46. }
  47. };
  48.  
  49. #endif

头文件等=>

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #ifndef ONLINE_JUDGE
  4. #include "local.h"
  5. #endif
  6. #define X first
  7. #define Y second
  8. #define pb(x) push_back(x)
  9. #define mp(x, y) make_pair(x, y)
  10. #define all(a) (a).begin(), (a).end()
  11. #define mset(a, x) memset(a, x, sizeof(a))
  12. #define mcpy(a, b) memcpy(a, b, sizeof(a))
  13. typedef long long ll;
  14. template<typename T>bool umax(T&a, const T&b){return b<=a?false:(a=b,true);}
  15. template<typename T>bool umin(T&a, const T&b){return b>=a?false:(a=b,true);}
  16.  
  17. int main() {
  18. #ifndef ONLINE_JUDGE
  19. freopen("in.txt", "r", stdin);
  20. //freopen("out.txt", "w", stdout);
  21. #endif // ONLINE_JUDGE
  22.  
  23. return ;
  24. }

结果:

acm的一些头文件和调试代码的更多相关文章

  1. ACM竞赛常用头文件模板-备忘

    备忘. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...

  2. C预编译, 预处理, C/C++头文件, 编译控制,

    在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的 ...

  3. 如何使用dump文件进行调试

    转载[文尾出处链接] 1 简介第一次遇到程序崩溃的问题,之前为单位开发了一个插件程序,在本机运行没有出现问题,但把生成的可执行文件拷贝到服务器上一运行程序,刚进入插件代码,插件服务就崩溃了,当时被这个 ...

  4. c语言头文件和源文件不在同一个目录

    http://www.cnblogs.com/ShaneZhang/archive/2013/05/20/3088688.html 从工程上讲,头文件的文件名应该与对应的源文件名相同便于维护,如果头文 ...

  5. C++头文件<bits/stdc++.h>

    在刷题时,总发现有的只写一行头文件 #include <bits/stdc++.h> . 查阅资料后,才知道原来:#include<bits/stdc++.h>包含了目前c++ ...

  6. [C/C++]编程规范一:头文件篇

    一般来说,每一个.cc或者.cpp文件对应一个头文件(.h文件),当然,也有例外,例如一些测试单元或者main文件,头文件的一些规范可以令代码可读性.程序的性能等大为改观,所以还是要注意头文件的规范问 ...

  7. Visual Studio Code 配置C、C++ 文件debug调试环境

    目录 vscode C/C++ Extension Pack 插件安装 vscode windows 端 debug 配置 window MinGW 环境安装 windows 端 C.CPP 单文件 ...

  8. 基于WDF的PCI/PCIe接口卡Windows驱动程序(3)- 驱动程序代码(头文件)

    原文出处:http://www.cnblogs.com/jacklu/p/4679304.html 在WDF的PCIe驱动程序中,共有四个.h文件(Public.h  Driver.h  Device ...

  9. c头文件包含关系--记今天调试的郁闷经历

    c头文件包含关系--记今天调试的郁闷经历 彭会锋 2016-08-05  21:54:08 c头文件的包含

随机推荐

  1. Project configuration is not up-to-date with pom.xml.错误

    完整错误信息:Description Resource Path Location TypeProject configuration is not up-to-date with pom.xml. ...

  2. JavaScript基础笔记1220

    JavaScript笔记1.JavaScript关键词2.JavaScript标识符 必须以字母,下划线(_)或美元符($)开始. 后续的字符可以是字母.数字.下划线或者美元符 (数字是不允许作为首字 ...

  3. 多线程高并发编程(6) -- Semaphere、Exchanger源码分析

    一.Semaphere 1.概念 一个计数信号量.在概念上,信号量维持一组许可证.如果有必要,每个acquire()都会阻塞,直到许可证可用,然后才能使用它.每个release()添加许可证,潜在地释 ...

  4. Jwt认识与攻击

    今天看到2018强网杯的题目,因此总结一下. Json Web Token Json Web Token简称jwt 那么怎么样可以让HTTP记住曾经发生的事情呢? 这里的选择可以很多:cookie,s ...

  5. 【转】动态规划之最长公共子序列(LCS)

    [原文链接]最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经典的面试题目,因为它的解法是典型的二维动态规划,大部分比较困难的字符串问题都和这个问题一个套 ...

  6. redis: 其他数据类型(八)

    1.geospatial 地理位置 有效的经度从-180度到180度 有效的纬度从-85.05112878度到85.05112878度 当坐标位置超出上述指定范围时,该命令将会返回一个错误 底层实现原 ...

  7. 关于Sysinternals Suite

    sysinternals 的网站创立于1996年由Mark russinovich和布赖科格斯韦尔主办其先进的系统工具和技术资料·微软于2006年7月收购sysinternals公司 . 不管你是一个 ...

  8. git工具上传项目到码云

    首先,你需要在本地安装git客户端,此处简单易懂,略过然后,在本地建好文件夹,以本人为例,我的路径为 E:\git_project,此时需要通过鼠标右键选择:git bush here 如图所示然后会 ...

  9. java学习(第二篇)语法学习

    1.java标识符 类名.变量名以及方法名都被称为标识符. 关于 Java 标识符,有以下几点需要注意: 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($).或者下划线(_)开始 首字符之 ...

  10. Docker安装MySql完整教程、实操

    docker:官网 docker:镜像官网:        镜像官网可以所有应用,选择安装环境:会给出安装命令,例如:docker pull redis 默认拉取最新的版本(指定版本:docker p ...