2014-09-23 28 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函數。