• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::


Browsing this Thread:   1 Anonymous Users






Re: C18的itoa,需要#include <stdlib.h>嗎?
#9
高級會員
高級會員


查看用戶資訊
應該是有分羅輯錯誤跟語法錯誤
如同你所說的 if(a=b) 這在我用過的compiler 上面..
蠻多都會正常編譯過,連Warning 也不會秀,因為它算羅輯錯誤,是 programer 自身的思維不能達到自已所想要的結果,並非不符合ansi c 的規範
void main(void){   
   
int a=0,b=0;
   if(
a=b){}
   
//visual C++ 6.0 compiler success , no warning and error message
}


但是 明明宣告的 array 只有 7 個. 卻能用第八個,這已經算是語法錯誤了
不過 如同你所說,工具的確能正常工作,不會因為有a[8] 而造成hex檔錯誤.
所以microchip 不認為是bug 我能理解,不過就羅輯與語法來判斷的話,我認為這算一個bug ...

-----------------------------------------------------------------
自已來打自已的嘴了.. a[8] 在visual c++ 6 也能過.
在BCB 也能過, 看來這認定是 羅輯錯誤了.
那就真如你所說,並非microchip的問題.
因為羅輯錯誤不算是bug . 是programer 自已的問題。
-----------------------------------------------------------------

發表於: 2006/11/21 18:10
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18的itoa,需要#include <stdlib.h>嗎?
#8
資深會員
資深會員


查看用戶資訊
參照:

powmien 寫到:
對了
compiler 也是會有bug.的
像前幾天在討論區就看到一篇文章內容大致是

int a[8];
a[8] 這元素卻能用的bug ..

所以compiler 沒通知你錯誤讓你執行並不代表這就是對的。


基本上在microchip compiler 的認知裡是不把他當做bug 看待的,
只能自己多注意

像是 if 的寫法, 一般正常寫法應該是這樣, if(a==b)
如果你寫成, if(a=b), 結果會如何呢
粉抱歉, compiler 是不會發出waring 的
而是會執行令 a=b的動作, if 的結果當然 always =1

所以其實那不算C18的 bug
只是microchip 的認知和現實有些不同罷了



發表於: 2006/11/21 18:05
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18的itoa,需要#include <stdlib.h>嗎?
#7
高級會員
高級會員


查看用戶資訊
我這樣寫倒是沒看到 2054 那個Warning message
2058正是提醒無prototype的message,
我跟你都是來這邊尋求知識的, 一起努力吧.
void main(void)
{
    
word i;
    
int x=1234;
    
int xx=4321;
    
char jj[5];
           
char *tt;
                  
    
tt=jj;    
    
itoa(x,jj);
    
itoa(xx,tt);
        
Nop();
}

發表於: 2006/11/21 16:13
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18的itoa,需要#include <stdlib.h>嗎?
#6
高級會員
高級會員


查看用戶資訊
重新測試如下:

有加 #include <stdlib.h>時得到Warning [2054] suspicious pointer conversion

沒加 #include <stdlib.h>時得到Warning [2058] call of function without prototype


以下修正後
char ASCII_Buf[6];
就全部沒有警告了

感謝大大的指導!^_^

發表於: 2006/11/21 15:46
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18的itoa,需要#include <stdlib.h>嗎?
#5
高級會員
高級會員


查看用戶資訊
對了
compiler 也是會有bug.的
像前幾天在討論區就看到一篇文章內容大致是

int a[8];
a[8] 這元素卻能用的bug ..

所以compiler 沒通知你錯誤讓你執行並不代表這就是對的。

發表於: 2006/11/21 15:39
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18的itoa,需要#include <stdlib.h>嗎?
#4
高級會員
高級會員


查看用戶資訊
照標準走會是比較理想的做法
雖然書也可能出錯,但是一開始還是照書上/規範的做還是比較好。
等你能改head 檔了自已寫head 檔了可以再嘗試新的方法。
像我之前用BCB寫小程式,有一天boss忽然叫我用vc.. 就發現了很多不一樣之處.. 在bcb ok 的…在vc可能異常
這時後就把code 寫的符合ansi c 的規範就比較正常了,同時在vc/bcb run 都ok...

c的規範一開始就有提到,要使用function時,一定要有prototype.
所以....


發表於: 2006/11/21 15:29
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18的itoa,需要#include <stdlib.h>嗎?
#3
高級會員
高級會員


查看用戶資訊
感謝回應

我用的C18是剛從網路上下載的學生版
測試檔案就是W401 Answer裡的Ans4
我也測試和找了一下
沒找到哪裡有宣告
也沒有警告是指這個問題

請先進們指導之,謝謝

發表於: 2006/11/21 15:03
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18的itoa,需要#include <stdlib.h>嗎?
#2
高級會員
高級會員


查看用戶資訊
我用C18 v3_06
用ultraedit search 整個include 目錄之後發現
itoa prototype 的確只有 stdlib.h 有
再來我直接在我的 code 使用itoa
也的確因為我沒stdlib.h而
顯示沒itoa 的prototype的Warning message

所以我只能推測可能的原因
1)你在別的地方宣告了所以可以用
2)你無視 Warning message 繼續使用

因為沒 include stdlib.h 雖然會出現 Warning message 但是 itoa 還是能動,但是這是不良的,記得我以前有一個案子也忽略了一些 Warning message (因為有些Warning message 只是提示你的變數宣告了卻沒使用過),所以忽略了。
結果後來找bug找了老半天,把Warning message 提醒的全修正就正常了… 共勉之....

發表於: 2006/11/21 11:17
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


C18的itoa,需要#include <stdlib.h>嗎?
#1
高級會員
高級會員


查看用戶資訊
如題
我從範例中拿掉後, 編譯還是PASS
可是MPLAB-C18-Libraries_51297f.pdf中卻提到要stdlib.h
為什麼呢?

發表於: 2006/11/21 10:36
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------