2014-09-23 27 views
-5

我见过有类似问题的人涉及其他文件类型,但没有直接处理FILE。正如标题所述,错误为'FILE *' differs in levels of indirection from 'FILE'奇怪的错误:'FILE *'与'FILE'的间接程度不同

在我main.h,我包括<stdio.h>,而如果我没有记错,是在它的文件流型的唯一标准库。然后,在一个标题中,我有extern FILE *gvLog;。我仅在main.h中包含<stdio.h>,并且我使用了#ifndef _MAINH_来防止它被包含两次,所以为什么会出现此错误?这是什么意思?

+0

这可能意味着您正在将'* gvLog'而不是'gvLog'传递给具有'FILE *'参数的函数。但是如果你想要更多的猜测,你必须向我们展示导致错误的代码。 – 2014-09-23 02:49:34

回答

1

'间接水平'语言意味着一个是一个类型,另一个是指向该类型的指针。在这种情况下,FILE是一种类型,FILE*是该类型的指针。您正在使用另一个预期的地址,很有可能您将*gvLog(类型为FILE的对象)传递给预期为FILE*(指向FILE类型的对象的指针)的stdio函数。