今天有同事在開發Embedded System應用,使用"類DOS"系統,開發工具是Turbo C 2.0。
因為他不會C語言,所以我簡單地教他用指標與atof等函數,但卻在如此簡單的範例出錯:
會出現
我拿以前寫的轉換程式來執行,卻完全正常。
後來經過幾次測試,發現只要有三角函數就會自動連結math lib,結果真是做夢也沒想到,居然需要加一行dummy指令才有用。
這麼大的Bug,為什麼我十幾年前玩Turbo C時都不知道呢....
因為他不會C語言,所以我簡單地教他用指標與atof等函數,但卻在如此簡單的範例出錯:
#include <stdio.h>輸入 tcc a.c 再執行 a.exe
#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;
}
會出現
scanf : floating point formats not linked實在是很怪異,換別的compiler當然沒問題。看起來是沒有連結到math library,但我手動連結也沒用。
Abnormal program termination
我拿以前寫的轉換程式來執行,卻完全正常。
後來經過幾次測試,發現只要有三角函數就會自動連結math lib,結果真是做夢也沒想到,居然需要加一行dummy指令才有用。
這麼大的Bug,為什麼我十幾年前玩Turbo C時都不知道呢....
留言