共2个回答0条评论
分享
你能写一行C/C++代码让VS 提示尽量多的编译期错误吗?
yan
排序方式:被封时间
时间排序由新到旧
- 129 个点赞 👍
code golf之前举办过一个比赛,用最少的代码写出最多的报错。用“报错数/代码长度”代表最终得分,分数高获胜。
我选了几个有意思的例子:
1.
#include __FILE__ #include __FILE__
递归引入了文件,这个例子最后拿了第一名,理论报错数 2^{200} ,36个字符,得分 2^{200}/36=4.5*10^{58}
2.
不写任何内容GCC也会报错,所以得分是正无穷,有点赖皮了……
3.
#define E a,a,a,a,a,a,a,a,a,a #define D E,E,E,E,E,E,E,E,E,E #define C D,D,D,D,D,D,D,D,D,D #define B C,C,C,C,C,C,C,C,C,C #define A B,B,B,B,B,B,B,B,B,B _(){A,A,A,A,A,A,A,A,A,A}
也是利用递归引起的错误1000003个报错,179个字符,得分5586.6
4.
%rep 1<<32 %rep 1<<32 ! %endrep %endrep
这个大佬用汇编写的,反正也看不懂,错误数 2^{64} 个,得分 2.905 * 10^{19}
编辑于 2023-08-07 14:02・IP 属地江苏查看全文>>
littlebutt - 11 个点赞 👍
随手撸了个clang版本:
#include <utility> #include <climits> #include <cstdlib> int n[1], a = ([]<size_t... I>(std::index_sequence<I...>) { (n[I] = I, ...); }(std::make_index_sequence<10000>{}), 0); int main(int argc, char* argv[]) { return 0; }
编译命令:
clang test.cpp -fbracket-depth=100000
随手生成10000个warning(:
- 系统版本:Ubuntu 20.04.4 LTS(WSL2)
- clang版本:17.0.0
发布于 2023-07-07 03:32・IP 属地新加坡查看全文>>
将子山