V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wenLiangcan
V2EX  ›  问与答

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

  •  
  •   wenLiangcan · 2014-10-12 22:29:38 +08:00 · 3098 次点击
    这是一个创建于 3686 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因为 OJ 一般不能上传多个文件,所以不想建一个 header 文件,可是这时想在一个独立的文件里写测试代码要怎么才能调用到被测试文件里的函数呢?
    15 条回复    2014-10-12 23:52:14 +08:00
    wisatbff
        1
    wisatbff  
       2014-10-12 22:31:27 +08:00
    没看懂你要做什么
    wenLiangcan
        2
    wenLiangcan  
    OP
       2014-10-12 22:36:02 +08:00
    @wisatbff 额,比如我在 a.c 里有个函数 func,可是 func 是直接声明在 a.c 里面的(就是没有建 header),我要怎么在另一个文件 b.c 里调用到 func 呢?
    ChanneW
        3
    ChanneW  
       2014-10-12 22:41:57 +08:00   ❤️ 1
    extern
    ChanneW
        4
    ChanneW  
       2014-10-12 22:49:43 +08:00
    声明总归都要写一遍的, 不放到头文件里, 你就要放到 b.c 里. 还得加 extern . 所以还是老老实实写 .h 吧.
    而且 C 编程习惯把详细的函数注释写在 .h 里, 这样方便别人看(用的人不关系怎么实现的,只看怎么调),做成lib 也容易. .h 本身就是最好的文档.
    wenLiangcan
        5
    wenLiangcan  
    OP
       2014-10-12 22:56:47 +08:00
    @ChanneW 我并不排斥写头文件,只是做 OJ 的情况,要打开复制粘贴两个文件觉得好麻烦。。。。
    msg7086
        6
    msg7086  
       2014-10-12 23:08:43 +08:00 via iPhone
    头文件不用交吧,你只是把函数导出给测试程序而已啊
    wisatbff
        7
    wisatbff  
       2014-10-12 23:10:25 +08:00
    @wenLiangcan 写个脚本,一劳永逸
    ChanneW
        8
    ChanneW  
       2014-10-12 23:17:46 +08:00
    没做过 C 的 oj
    我以为 OJ 提交的文档一般是完整的文档,包含main 的,通过标准标准输出,控制和检测正确性.
    难道是直接提交单个函数? 那得要规定好用户提交的函数名字和参数喽~
    wenLiangcan
        9
    wenLiangcan  
    OP
       2014-10-12 23:20:25 +08:00
    @msg7086 可是总得写声明吧?不就得把头文件里的声明跟代码一起交上去么?还有可能我们学校的系统比较烂吧,需要自己写 main 函数。
    wenLiangcan
        10
    wenLiangcan  
    OP
       2014-10-12 23:21:57 +08:00
    @ChanneW 是交完整的文档,可是只是一个文档。。。。
    wenLiangcan
        11
    wenLiangcan  
    OP
       2014-10-12 23:23:03 +08:00
    @wisatbff 你是指合并 source 跟 header 的脚本?是有这个想法。
    ChanneW
        12
    ChanneW  
       2014-10-12 23:27:55 +08:00
    干嘛要掉里面的函数呢? 直接开个子进程,把提交的文档编译执行不就好了?
    wenLiangcan
        13
    wenLiangcan  
    OP
       2014-10-12 23:37:26 +08:00
    @ChanneW 我的意思是,我们学校的 OJ 系统,在提交代码时只有一个文本框,如果我建立头文件的话,就得从头文件和源文件里 一共 复制粘贴两次到那个文本框里,我觉得这样有点麻烦,所以开了这个贴。(其实我不太确定你最近这条回复的意思。。。)
    bcxx
        14
    bcxx  
       2014-10-12 23:48:30 +08:00   ❤️ 1
    你要测试的话可以直接 #ifdef debug ,然后包你的测试函数在里面。提交的时候再把最开始的 #define debug 1 改成 #define debug 0 就可以了。
    ChanneW
        15
    ChanneW  
       2014-10-12 23:52:14 +08:00
    我以为你是在做OJ系统,原来你是想测自己的代码.明白了.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1358 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:35 · PVG 07:35 · LAX 15:35 · JFK 18:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.