3 ms·
Has anyone ever tried to compile it? It doesn't work for me: gcc -w 1990/tbr.c 1990/tbr.c: In function ‘main’: 1990/tbr.c:7:50: error: void value not ign
by nickdrozd 6y ago
Has anyone ever tried to compile it? It doesn't work for me:
gcc -w 1990/tbr.c
1990/tbr.c: In function ‘main’:
1990/tbr.c:7:50: error: void value not ignored as it ought to be
7 | e(-8) ,gets (1+( c=q) )|| exit (0); r(0,0)
| ^~~~~~~~~~~~~
1990/tbr.c: In function ‘e’:
1990/tbr.c:22:43: error: void value not ignored as it ought to be
22 | 3 ;}e(x){x<0?write(2,"?\n$ "-x/4,2),x+1||exit(1):
| ^~~~~~~
Similar for clang. I'm sure there is an easy fix, but I don't know what it is.
The program in question, if anyone is wondering, was the 1990 winner of IOCCC "Best Utility" award. Source is here:
https://www.ioccc.org/1990/tbr.c
The authors explain in rot13: "Guvf cebtenz vf n ehqvzragnel furyy."
- deleted 6y ago[deleted]
- jfk13 6y agoWorks for me with clang -std=c89 -Wno-implicit-function-declaration -fno-builtin tbr.c Compilers are fussier (with good reason!) than they used to be.
- nickdrozd 6y agoThose flags work with gcc too. A deleted commented suggested adding `int exit();`, which also worked.
- lifthrasiir 6y agoexit is a function returning void, which was traditionally coerced to 0 but anymore. Yusuke Endoh's patch [1] is available. [1] https://mame.github.io/ioccc-ja-spoilers/patches/1990-tbr.patch https://mame.github.io/ioccc-ja-spoilers/patches/1990-tbr.pa...
- byronr 6y agoNo coercion needed. Pre-ANSI C does not have a void type, so unless otherwise specified the return type of a function defaults to int.