跳到主要內容

古老的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的驅動程式,剩下的就是政府單位的網頁和程式應該改版了吧!!!

在Windows Server設定L2TP over IPSec VPN

簡單地說,macOS Sierra與iOS 10發表後,大家忽然發現Apple不再支援PPTP,所以一定得設定其他的VPN型態。若不要另外裝client,用L2TP是最方便的,SSL VPN雖然好,但若沒有安裝Agent要連線到任一電腦或是非網頁服務還是挺麻煩的。