4

今天,我正在阅读 Let Us C 中的结构(在Goodreads上)。我对linkfloat(). 如果不使用它,我可以在具有浮点类型数据成员的结构上编写程序。

我正在使用 ideone 在线编译器进行编程。

int main()
{
    struct book
    {
            char name;
            float price;
    };
    struct book b;
    scanf("%c %f",&b.name,&b.price);

    printf("%c %f",b.name,b.price);
    return 0;
}

/*linkfloat()
{
    float a=0,*b;
    b=&a; //cause emulator to be linked
    a=*b; //suppress the warning: variable not found
}*/

这是链接:http:
//ideone.com/peL5q

即使不使用linkfloat,程序也能正确编译和输出。那么它有什么作用呢?

4

1 回答 1

7

linkfloat与 Turbo C 时代相比,早期的英特尔 CPU 没有硬件浮点支持(1980 年代),而是依赖于需要链接到任何需要浮点支持的可执行文件的软件浮点库,这是一个不合时宜的时代。对于任何现代的 x86 CPU 和 C 编译器(过去 20 年左右的任何东西),您都不需要这种不合时宜的东西。我建议你放弃任何仍然提到这些东西的糟糕/过时的教科书或课程材料(一些印度大学仍在使用的 Kanetkar 的书在这方面特别糟糕)

于 2012-06-20T08:33:58.473 回答