Keil C 的編譯器產生的一個很難找到的bug......#include "stdafx.h"typedef struct 個人信貸_cgi_func_t{         void    (*func)(int);//call back 宜蘭民宿function    int value;}CGI_FUNC_T;extern void fun1(int n);extern void fun2(int n);CGI_FUNC_T 術後面膜cgi_table[] = {    {fun1, 0},    {fun2, 1}};int _tmain(int argc, _TCHAR* 澎湖民宿argv[]){    return 0;}此時假設專案檔名為abc,此時有主檔abc.cpp,還有另一個叫func.cpp的檔案,這檔案設計裝潢裡面有fun1和fun2的定義。此時如果把func.cpp從專案中移除,那就會出現找不到定義的錯誤,目前為知,一切都很正常。但是,室內設計在Keil C下,如果func.cpp從專案中移除,也是可以編譯過的!!一般compiler應該會檢查function宣告後有沒有其定義,但是seoKeil C竟然沒有檢查。那就很令人好奇了,但執行到這個function的時後呢?會怎麼樣呢?就是程式crash.....今天在做原廠的系統傢俱source code更新時,剛好要把原廠新的source code加入自已之前改的程式。運氣很好的忘了加入其中一個函式的定義檔到專案中買屋(告訴compiler這個也要編譯),結果就是crash,找了一整天才發現!!


.msgcontent .wsharing ul li { text-indent: 0; 術後面膜}



分享

Facebook
Plurk
YAHOO!

創作者介紹

過山車

fx29fxlufb 發表在 痞客邦 PIXNET 留言(0) 人氣()