wenLiangcan
V2EX  ›  问与答

如何测试单个 C 文件里的代码?

  •  
  •   wenLiangcan · Oct 12, 2014 · 3750 views
    This topic created in 4254 days ago, the information mentioned may be changed or developed.
    因为 OJ 一般不能上传多个文件,所以不想建一个 header 文件,可是这时想在一个独立的文件里写测试代码要怎么才能调用到被测试文件里的函数呢?
    15 replies    2014-10-12 23:52:14 +08:00
    wisatbff
        1
    wisatbff  
       Oct 12, 2014
    没看懂你要做什么
    wenLiangcan
        2
    wenLiangcan  
    OP
       Oct 12, 2014
    @wisatbff 额,比如我在 a.c 里有个函数 func,可是 func 是直接声明在 a.c 里面的(就是没有建 header),我要怎么在另一个文件 b.c 里调用到 func 呢?
    ChanneW
        3
    ChanneW  
       Oct 12, 2014   ❤️ 1
    extern
    ChanneW
        4
    ChanneW  
       Oct 12, 2014
    声明总归都要写一遍的, 不放到头文件里, 你就要放到 b.c 里. 还得加 extern . 所以还是老老实实写 .h 吧.
    而且 C 编程习惯把详细的函数注释写在 .h 里, 这样方便别人看(用的人不关系怎么实现的,只看怎么调),做成lib 也容易. .h 本身就是最好的文档.
    wenLiangcan
        5
    wenLiangcan  
    OP
       Oct 12, 2014
    @ChanneW 我并不排斥写头文件,只是做 OJ 的情况,要打开复制粘贴两个文件觉得好麻烦。。。。
    msg7086
        6
    msg7086  
       Oct 12, 2014 via iPhone
    头文件不用交吧,你只是把函数导出给测试程序而已啊
    wisatbff
        7
    wisatbff  
       Oct 12, 2014
    @wenLiangcan 写个脚本,一劳永逸
    ChanneW
        8
    ChanneW  
       Oct 12, 2014
    没做过 C 的 oj
    我以为 OJ 提交的文档一般是完整的文档,包含main 的,通过标准标准输出,控制和检测正确性.
    难道是直接提交单个函数? 那得要规定好用户提交的函数名字和参数喽~
    wenLiangcan
        9
    wenLiangcan  
    OP
       Oct 12, 2014
    @msg7086 可是总得写声明吧?不就得把头文件里的声明跟代码一起交上去么?还有可能我们学校的系统比较烂吧,需要自己写 main 函数。
    wenLiangcan
        10
    wenLiangcan  
    OP
       Oct 12, 2014
    @ChanneW 是交完整的文档,可是只是一个文档。。。。
    wenLiangcan
        11
    wenLiangcan  
    OP
       Oct 12, 2014
    @wisatbff 你是指合并 source 跟 header 的脚本?是有这个想法。
    ChanneW
        12
    ChanneW  
       Oct 12, 2014
    干嘛要掉里面的函数呢? 直接开个子进程,把提交的文档编译执行不就好了?
    wenLiangcan
        13
    wenLiangcan  
    OP
       Oct 12, 2014
    @ChanneW 我的意思是,我们学校的 OJ 系统,在提交代码时只有一个文本框,如果我建立头文件的话,就得从头文件和源文件里 一共 复制粘贴两次到那个文本框里,我觉得这样有点麻烦,所以开了这个贴。(其实我不太确定你最近这条回复的意思。。。)
    bcxx
        14
    bcxx  
       Oct 12, 2014   ❤️ 1
    你要测试的话可以直接 #ifdef debug ,然后包你的测试函数在里面。提交的时候再把最开始的 #define debug 1 改成 #define debug 0 就可以了。
    ChanneW
        15
    ChanneW  
       Oct 12, 2014
    我以为你是在做OJ系统,原来你是想测自己的代码.明白了.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2938 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 06:43 · PVG 14:43 · LAX 23:43 · JFK 02:43
    ♥ Do have faith in what you're doing.