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

2014-10-12 22:29:38 +08:00
 wenLiangcan
因为 OJ 一般不能上传多个文件,所以不想建一个 header 文件,可是这时想在一个独立的文件里写测试代码要怎么才能调用到被测试文件里的函数呢?
2997 次点击
所在节点    问与答
15 条回复
wisatbff
2014-10-12 22:31:27 +08:00
没看懂你要做什么
wenLiangcan
2014-10-12 22:36:02 +08:00
@wisatbff 额,比如我在 a.c 里有个函数 func,可是 func 是直接声明在 a.c 里面的(就是没有建 header),我要怎么在另一个文件 b.c 里调用到 func 呢?
ChanneW
2014-10-12 22:41:57 +08:00
extern
ChanneW
2014-10-12 22:49:43 +08:00
声明总归都要写一遍的, 不放到头文件里, 你就要放到 b.c 里. 还得加 extern . 所以还是老老实实写 .h 吧.
而且 C 编程习惯把详细的函数注释写在 .h 里, 这样方便别人看(用的人不关系怎么实现的,只看怎么调),做成lib 也容易. .h 本身就是最好的文档.
wenLiangcan
2014-10-12 22:56:47 +08:00
@ChanneW 我并不排斥写头文件,只是做 OJ 的情况,要打开复制粘贴两个文件觉得好麻烦。。。。
msg7086
2014-10-12 23:08:43 +08:00
头文件不用交吧,你只是把函数导出给测试程序而已啊
wisatbff
2014-10-12 23:10:25 +08:00
@wenLiangcan 写个脚本,一劳永逸
ChanneW
2014-10-12 23:17:46 +08:00
没做过 C 的 oj
我以为 OJ 提交的文档一般是完整的文档,包含main 的,通过标准标准输出,控制和检测正确性.
难道是直接提交单个函数? 那得要规定好用户提交的函数名字和参数喽~
wenLiangcan
2014-10-12 23:20:25 +08:00
@msg7086 可是总得写声明吧?不就得把头文件里的声明跟代码一起交上去么?还有可能我们学校的系统比较烂吧,需要自己写 main 函数。
wenLiangcan
2014-10-12 23:21:57 +08:00
@ChanneW 是交完整的文档,可是只是一个文档。。。。
wenLiangcan
2014-10-12 23:23:03 +08:00
@wisatbff 你是指合并 source 跟 header 的脚本?是有这个想法。
ChanneW
2014-10-12 23:27:55 +08:00
干嘛要掉里面的函数呢? 直接开个子进程,把提交的文档编译执行不就好了?
wenLiangcan
2014-10-12 23:37:26 +08:00
@ChanneW 我的意思是,我们学校的 OJ 系统,在提交代码时只有一个文本框,如果我建立头文件的话,就得从头文件和源文件里 一共 复制粘贴两次到那个文本框里,我觉得这样有点麻烦,所以开了这个贴。(其实我不太确定你最近这条回复的意思。。。)
bcxx
2014-10-12 23:48:30 +08:00
你要测试的话可以直接 #ifdef debug ,然后包你的测试函数在里面。提交的时候再把最开始的 #define debug 1 改成 #define debug 0 就可以了。
ChanneW
2014-10-12 23:52:14 +08:00
我以为你是在做OJ系统,原来你是想测自己的代码.明白了.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/138522

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX