[问题] 新手学C,求指路

楼主: k03004748549 (蚬)   2014-07-13 23:07:24
开发平台(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的动作呢?
真的是不太了解...)
作者: PUTOUCHANG (自己的废文自己发)   2014-07-13 23:12:00
type casting 有问题?
作者: firejox (Tangent)   2014-07-13 23:14:00
从错误讯息来看 应该是型别的问题
作者: tanted (为何世界会那么不单纯)   2014-07-13 23:15:00
只是传入参数和原先函数原型所定义的变量型别不同
作者: tjjh89017 (伊达政宗)   2014-07-14 00:08:00
警告不重要,只要不是致命错误就好(咦?
作者: q82419 (q82419)   2014-07-14 00:50:00
应该是标准的问题?NULL在C是define成0 C++是define成(void *)0 的样子??没有stdlib.h就帮他include上吧 lib应该都有ifndef应该OK的或者是在哪边有include只是你没发觉 @@
作者: tjjh89017 (伊达政宗)   2014-07-14 14:44:00
C++的NULL是define成nullptr
作者: LPH66 (-6.2598534e+18f)   2014-07-14 15:32:00
楼上是 C++11 才是这样, C++03 好像就直接是 0 的样子所以印象中为此有时候还得写 (void *)NULL
作者: azureblaze (AzureBlaze)   2014-07-14 16:47:00
c的NULL没有标准定义
作者: realmeat (真肉)   2014-07-15 10:14:00
header 定义互盖, 去看一下你include header 的内容物

Links booklink

Contact Us: admin [ a t ] ucptt.com