如何转换K&R C至ANSI C?

Vad*_*ath 6 c obfuscation kr-c

我正在尝试执行以下代码,这是1988年的混淆C代码竞赛条目.

#define _ -F<00||--F-OO--;
int F=00,OO=00;main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
{
            _-_-_-_
       _-_-_-_-_-_-_-_-_
    _-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_
    _-_-_-_-_-_-_-_-_-_-_-_
        _-_-_-_-_-_-_-_
            _-_-_-_
}
Run Code Online (Sandbox Code Playgroud)

从条目描述中,此代码通过查看其自己的区域来计算pi.我成功编译它而不更改代码.但是当我执行时,它给了我0.25的值,我期待的是3.14.代码描述表明它在K&R C中,如果没有一些更改,它在ANSI C中无法正常工作.我想我必须做那些修改才能正确执行它.我以前没有K&R C的经验.所以有人可以帮助我将上述代码更改为ANSI C或指出问题(如果有的话).我正在使用Microsoft Visual Studio 2008来执行此操作.

Jon*_*ler 10

如果您有GCC,请使用' -traditional-cpp'标志进行编译.

不同之处在于' -_'序列是否被翻译为' - -F<00'或' --F<00'.

一个空间是至关重要的:它是双重否定和预先减少之间的区别.