• 一些有用但没用的东西


    ioi 打完就想发了,鸽到了现在,写点关于交互题的东西。

    我是一个主用 vim 写代码的人,用 gdb 调试的人。

    我在写交互题的时候(或任何要多文件编译的时候),或多或少会有些难受。在以前我会采取编写代码时,将交互库贴到我代码前变为单文件编译,最后再删掉前面多文件编译检查。即使这样也会比较难受。

    后来我发现了一种比较好的解决方案:

    // filename : test.cpp
    #include "akioi.h"
    #include "grader.cpp"
    
    void solve(int n) {
    }
    

    注意,这样还是可能访问到 grader.cpp 内变量,建议还是要多文件编译检查一下

    上面说到,我是 gdb 调试的选手,gdb 在处理多文件时候依然会比单文件难受,主要是你在使用 b/break 命令时候,gdb 不知道你说的是哪个文件,它一般采用你上一次使用 list 展示代码的文件,没有就是 main 所在文件(可能不对,但我目前看来是这样)。也就是说,你打开 gdb 就是一个 break,它是 break 在 grader.cpp 的,这一般不是你写交互题时候想要的。而如果你在一开始使用了 list test.cpp:1,0,那么后面 break 都会是在 test.cpp

    当然,作为一个优秀的鸽子,我当然是不想每次打开 gdb 就先打个 list test.cpp 的,我发现 gdb 有个参数是 --eval-command,它会在所有命令前运行。因此我们把 gdb 启动命令从 gdb test 改成 gdb test "--eval-command=list test.cpp:1,0" 就可以了(可能有转义问题,有的话大家自己调调),这完全是可以写进 vim 配置的,而且传统题使用这条指令也是完全没有问题。

    这都是训练 ioi 时候写交互写疯了整出的的东西,而且 ioi 试机赛时候才搞好

  • 相关阅读:
    commando VM安装
    Pocscan搭建详解
    Windows-RW-LinuxFS
    Festival
    ffmpeg-metadata
    FFmpeg-Screen-Recording
    ffmpeg-map
    ffmpeg-utils
    Linux-Fcitx5
    ffmpeg-volumedetect
  • 原文地址:https://www.cnblogs.com/skip1978/p/15620960.html
Copyright © 2020-2023  润新知