警告:赋值使整数指针没有未定义的强制转换

时间:2013-01-24 20:44:06

标签: c amiga

我意识到有很多与这个问题有关的问题,但我无法从我读过的那些问题中找到头脑或故事。

我正在尝试为Amiga学习C并决定尝试按照本教程进行操作: http://www.pcguru.plus.com/tutorial/amiga_c.html

在达到这一点时,我已经遇到了noob问题:

#include <proto/intuition.h>
#include <intuition/screens.h>
#include <proto/dos.h>
#include <stdio.h>
int main(void) {

   struct Screen *myScreen;
   if (myScreen = LockPubScreen(NULL)) {
        printf("Public Screen locked.\n");
        Delay(100);
        UnlockPubScreen(NULL, myScreen);
        printf("Public Screen unlocked.\n");
   }
   return 0;
}

我正在使用GCC编译器和Shell中的以下命令:

gcc -o LockPubScreen LockPubScreen.c

返回以下内容:

Warning: assignment makes pointer from integer without a cast
undefined reference to 'LockPubScreen'
undefined reference to 'Delay'
undefined reference to 'UnlockPubScreen

除了'HelloWorld'之外,这是C或编程Amiga的第一次尝试,所以我想我错过了一些明显的东西。

2 个答案:

答案 0 :(得分:3)

您可能需要包含一个或多个这些附加文件,以获取您缺少的函数的原型:

#include <intuition/gadgetclass.h>
#include <intuition/IntuitionBase.h>
#include <libraries/gadtools.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>
#include <clib/gadtools_protos.h>

然后,正如NPE建议的那样,如果您的编译器默认情况下不包含必需的库,并且您没有指定它,则可能会遇到链接错误。

答案 1 :(得分:3)

如果您曾提到过您尝试在AmigaOS 4.x下编译该程序,答案显而易见。 OS4中的库函数调用也必须包含库接口 - IIntuition-&gt; LockPubScreen(),IDOS-&gt; Delay()等 - 或者您必须在代码开头#define __USE_INLINE__