一些有用但沒用的東西


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 試機賽時候才搞好


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM