跳到主要內容

古老的Turbo C 2.0 Bug

今天有同事在開發Embedded System應用,使用"類DOS"系統,開發工具是Turbo C 2.0。
因為他不會C語言,所以我簡單地教他用指標與atof等函數,但卻在如此簡單的範例出錯:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void)
{
    double ret;
    char *xxx="32.3";
    /* sin(0); */
    /*加上面這行才會自己連結math library */
    ret = atof(xxx);
    printf ( "%f \n" , ret);
    return 0;
}
輸入 tcc a.c 再執行 a.exe
會出現
scanf : floating point formats not linked
Abnormal program termination
實在是很怪異,換別的compiler當然沒問題。看起來是沒有連結到math library,但我手動連結也沒用。
我拿以前寫的轉換程式來執行,卻完全正常。
後來經過幾次測試,發現只要有三角函數就會自動連結math lib,結果真是做夢也沒想到,居然需要加一行dummy指令才有用。

這麼大的Bug,為什麼我十幾年前玩Turbo C時都不知道呢....

留言

這個網誌中的熱門文章

自然人憑證讀卡機驅動程式

鳥毅用的是第一代的自然人憑證讀卡機,EZ100PU(後來有同事買EZmini可以讀SIM卡似乎更好),每年報稅時用一次。 本來只是要申請些政府業務,一時之間找不到光碟,沒想到在 驅動程式下載 居然看到Linux和Mac的驅動程式,剩下的就是政府單位的網頁和程式應該改版了吧!!!

用ZedGraph畫統計圖

Update: 沒想到這篇居然變成Google搜尋ZedGraph第一篇中文網頁,不過還是誠心建議用Windows上的C#先看一下 免費的圖表元件:Microsoft Chart Controls ,除非你非得用.Net 2.0(Windows 2000)或是用 Mono 。 BTW,我並不想成為微軟MVP,所以本Blog並不是有問必答的喲^_^ 才剛貼完上一篇,馬上就有位朋友丟過來一個LGPL Open Source元件的網址: ZedGraph 。 參考: A flexible charting library for .NET