Fw: [問題] ptt編譯移植問題
※ [本文轉錄自 C_and_CPP 看板 #1JuQBV_3 ]
作者: erspicu (.) 看板: C_and_CPP
標題: [問題] ptt編譯移植問題
時間: Wed Aug 6 11:36:59 2014
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
ARM Linux GCC
問題(Question):
X86平台上 註冊時候輸入正確中文姓名 PTT給過
但ARM平台上 住測時候輸入正確中文姓名 PTT顯示 "您的輸入似乎不正確"
無法繼續後續註冊程序
錯誤結果(Wrong Output):
姓名正確性判別失誤
程式碼(Code):(請善用置底文網頁, 記得排版)
http://ideone.com/L6Dw9G
補充說明(Supplement):
PttCurrent版太冷僻 沒人會回
自自己嘗試解決 只好定義FOREIGN_REG flag
直接忽略中文姓名正確判別 才能繼續後續註冊
編譯過程中 的警告訊息 查起來是 assembler的問題
但我現在沒辦法貼上
目前猜測是 arm上 編譯器或是組譯器問題
可能跟arm.x86一些cpu架構性差異問題 (LE BE?)
這問題有空自己會繼續追
但想說有經驗的人或許會知道怎麼回事
滿奇妙的 中間應該有不少文章
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.56.181
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1407296223.A.FC3.html
→
08/06 11:43, , 1F
08/06 11:43, 1F
check 環境語系問題 應該不是 這問題追起來應該相當多文章
※ 編輯: erspicu (60.248.56.181), 08/06/2014 11:50:37
→
08/06 12:19, , 2F
08/06 12:19, 2F
真的很奇妙 大概發現原因
http://ideone.com/OuBhdX
char test_char2[]= "中文字測試" ;
網站經過處理變亂碼 但原始是這樣
經過測試這code儲存為ASII編碼
然後在不同的環境用不同的編譯器去跑
印出來的數值會不太相同
WIN7 CODEBLOCKS GCC跑出來是
char test!
98 , 97 , 120 , 101
-92 , -92 , -92 , -27
x86 linux上是
char test!
98 , 97 , 101 , 114
-92 , -92 , -27 , -90
arm linux上是
98 , 97 ,120 , 101
164 , 164 ,164 , 229
※ 編輯: erspicu (60.248.56.181), 08/06/2014 17:38:55
→
08/06 17:59, , 3F
08/06 17:59, 3F
→
08/06 17:59, , 4F
08/06 17:59, 4F
http://blog.cdleary.com/2012/11/arm-chars-are-unsigned-by-default/
這應該就是問題原因了 比較奇怪的是同是X86 列印英文
一組是98 , 97 , 120 , 101 一組是98 , 97 , 101 , 114
※ 編輯: erspicu (60.248.56.181), 08/06/2014 18:15:47
推
08/06 18:14, , 5F
08/06 18:14, 5F
→
08/06 18:15, , 6F
08/06 18:15, 6F
→
08/06 18:16, , 7F
08/06 18:16, 7F
X86 LINUX sample 有打錯 array index變成 0,1,3,4 .....
所以的確只是signed和unsigned的問題 沒錯
這麼說來按照PTT sources的寫法 要編譯正確運作
在arm上就要多下一點編譯器參數了
※ 編輯: erspicu (60.248.56.181), 08/06/2014 18:20:58
→
08/06 18:23, , 8F
08/06 18:23, 8F
→
08/06 18:24, , 9F
08/06 18:24, 9F
※ 編輯: erspicu (60.248.56.181), 08/06/2014 18:25:11
→
08/06 21:40, , 10F
08/06 21:40, 10F
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: erspicu (61.70.105.149), 08/06/2014 21:40:36