室友想抄我的代码,给还是不给?
- 技术交流
- 2024-09-25 22:55:02
当然可以给,但是建议你在代码里做点手脚。
最初级的方法是在代码头部加入版权声明的注释,像下面这样子(以 C++ 程序为例)。但这种方法只能针对看都不看,直接原封不动地复制粘贴交作业的室友。
/* * 作业:*** * 作者:哆啦A梦 * 时间:2024-6-17 11:30 * 版权所有,盗版必究 */ #include <iostream> #define ___AUTHOR___IS___DORAEMON___ // 这里也是在说明作者是谁 // 再下面写程序代码就好了对于那种稍微警觉一点的,会复查源代码的室友,会把以上注释去掉,甚至换成自己的注释,到头你反而解释不清楚了。这时候就需要将版权声明放在稍微隐蔽一点的地方。比如,使用 ASCII 码来代替纯粹的英文字符,将版权声明隐蔽到运行结果里。
#include <iostream> int main(void) { // 下面这段字符串的值是 FROM: DORAEMON,就是各个字母的 ASCII 码。 // 这句注释只是我来向大家解释这段代码是什么意思的,实际操作时千万别写 char a[] = {70, 82, 79, 77, 58, 32, 68, 79, 82, 65, 69, 77, 79, 78, 0}; std::cout << a << std::endl; // 打印版权信息 // 在下面写程序代码 } // main()这样的话,室友即使复查你的代码,肯定也看不懂那串数字是什么意思(这都看懂了那还会找你抄代码吗!),越是看不懂的就越不敢乱改,等把作业交上去以后,老师一运行,自然知晓真相。
但是这样还不保险,万一室友运行了一遍程序,发现了你隐藏在代码里的版权信息怎么办?没关系,我们可以用条件触发器,超过指定的时间才显示版权信息!
#include <iostream> #include <ctime> int main(void) { char a[] = {70, 82, 79, 77, 58, 32, 68, 79, 82, 65, 69, 77, 79, 78, 0}; // 1560816000 是北京时间 2024 年 6 月 18 日 8 时的 Unix 时间戳,以下代码的作用是 // 仅当系统时间在 2024 年 6 月 18 日 8 时之后才打印版权信息。 if (std::time(0) > 1560816000) { std::cout << a << std::endl; } // if (std::time(0) > 1560816000) // 在下面写程序代码 } // main()如此,就既不丢人情,也不怕被卷入抄袭风波了。
更新:补充 cout 和 endl 前漏写的 std 命名空间。
室友想抄我的代码,给还是不给?由讯客互联技术交流栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“室友想抄我的代码,给还是不给?”