为什么有条件地编译一个过时的K&R定义而不是标准的C定义?

vwoqyblh  于 2023-04-19  发布在  其他
关注(0)|答案(1)|浏览(81)

我在野外偶然发现了这个代码,非常困惑。

#ifdef __STDC__
    double cos(double x)
#else
    double cos(x)
    double x;
#endif
{
    // ...
}

我看不出为什么#else中的后者在任何情况下都是更可取的。有什么理由像上面那样编写函数定义,而不是像下面这样非常标准和广泛接受的方式吗?

double cos(double x) {
    // ... 
}
qv7cva1a

qv7cva1a1#

当使用古代编译器编译代码或使用现代编译器编译代码时,可能有必要使用后一种形式,但有必要使用C语言的古代版本,因为正在编译的一些代码使用与现代C不兼容的旧C功能。

相关问题