[問題] 新手學C,求指路
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
主要為 GCC (on linux)
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
各位先進大家好,
最近老闆丟給我一份訊號處理相關的code(各種濾波、解迴旋等),
因為所附的bin原本是給solaris sparc系列跑的,
需要重新compile到比較普遍的PC環境下面,
只是本人程度不佳,
大學只學過基礎C++,懂資料型態、陣列、簡單的指標與迴圈,
物件導向跟IO處理因為課程時間不足,反而也沒接觸很多,
沒什麼獨立作業能力,有時候連要include哪些lib都不清楚。
加上這份code似乎是在1991~2001年間撰寫的,
作者明言是以K&R C編寫,
有時遇到一些問題我真的搞不懂是原寫法有問題,
還是規範有差異,gcc要再額外加flag或code要做修改,
(像現在最常遇到的三個警告:
/usr/include/stdio.h:678:20: note: expected ‘char ** __restrict__’ but argument is of type ‘char *’
extern _IO_ssize_t getline (char **__restrict __lineptr,
/usr/include/stdio.h:678:20: note: expected ‘size_t * __restrict__’ but argument is of type ‘struct FILE *’
extern _IO_ssize_t getline (char **__restrict __lineptr,
warning: comparison between pointer and integer [enabled by default]
if (p == NULL)
^
實在是不得要領...不確定該怎麼修改才會對,而且為什麼作者沒碰到這種問題...)
我想我可能需要從基礎面做了解,
因此想問看看是否有合適/合時的書,或推薦的線上課程及習題可以參考,
(圖書館的K&R被借走了...)
還望各位不吝指教,謝謝。
(還有一個小問題想問,
為什麼作者有用到malloc/free,
.c/.h/.sh卻完全看不到有include stdlib.h的動作呢?
真的是不太了解...)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.143.43
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1405264049.A.2C2.html
→
07/13 23:12, , 1F
07/13 23:12, 1F
→
07/13 23:14, , 2F
07/13 23:14, 2F
推
07/13 23:15, , 3F
07/13 23:15, 3F
似乎是有做型態轉換的動作
但跑完warning之後就接著出error了,因為getline沒讀到東西
目前還不太了解該段作用為何,所以沒把code貼上來
其實本篇只是想問看看各位有甚麼推薦的學習資源
※ 編輯: k03004748549 (1.162.143.43), 07/13/2014 23:22:16
→
07/14 00:08, , 4F
07/14 00:08, 4F
推
07/14 00:50, , 5F
07/14 00:50, 5F
→
07/14 00:52, , 6F
07/14 00:52, 6F
→
07/14 00:53, , 7F
07/14 00:53, 7F
→
07/14 00:54, , 8F
07/14 00:54, 8F
→
07/14 14:44, , 9F
07/14 14:44, 9F
推
07/14 15:32, , 10F
07/14 15:32, 10F
→
07/14 15:32, , 11F
07/14 15:32, 11F
→
07/14 16:47, , 12F
07/14 16:47, 12F
後來研究了一下,getline似乎是作者自己寫的function
大概是沒想到後來會有相同名稱的通用函數出現
所以我修改了函數名稱,至於==NULL則依照對應變數型態不同改成==0或=='/0'
compile就過了
warning變成只出現在型態轉換的時候(double轉int跟int*轉char*)
...
結果跑的時候出runtime error
*** Error in `./vmodel': realloc(): invalid next size: 0x0000000000863320 ***
Aborted (core dumped)
我想還是該寫信問問作者
※ 編輯: k03004748549 (140.115.21.196), 07/14/2014 17:37:10
→
07/15 10:14, , 13F
07/15 10:14, 13F