美文网首页
一个很简单的算法竞赛调试技巧

一个很简单的算法竞赛调试技巧

作者: 不知名小号 | 来源:发表于2019-04-19 23:49 被阅读0次

    刚刚看了华南理工大学罗勇军老师的课件学到的。可能大多数选手都会用吧,不过我现在才知道,所以要记下来。

    应用场景

    经常得写freopen()重定向,或者需要在代码里printf一个值,然后提交代码的时候得把那些重定向还有输出中间值注释掉,要一行一行注释的话就很麻烦。

    然后一个改进就是用预处理指令。
    看下面的代码

    #include <iostream>
    #include <cstring>
    using namespace std;
    #define mytest
    int main(){
        #ifdef  mytest
        // 如果定义了mytest,那么从这里开始到#endif的语句就会被执行,下面也一样
            freopen("A.in", "r", stdin);
        #endif
        string s;
        cin >> s;
        #ifdef  mytest
            cout << "testing" << endl;
        #endif
        cout << s;
    }
    
    

    这就是举个例子,代码实现的功能就是输入一个字符串并将其输出。
    因为#define了mytest,所以重定向和cout"testing"都会被执行(我的A.in里的内容就是“qwert”)。

    image.png
    但是如果把#define mytest这一行注释掉了,那就不会重定向,也不会输出“testing”了
    image.png

    作用

    这样子本来需要注释若干行的,现在注释一行就够了。对于我这种不喜欢单步调试直接printf的选手来说是方便了许多。(我遇到过几次忘记删注释然后贡献一发WA的情况呜呜呜。

    相关文章

      网友评论

          本文标题:一个很简单的算法竞赛调试技巧

          本文链接:https://www.haomeiwen.com/subject/wrmhgqtx.html