2015-04-02 68 views
0

警告:傳遞`printTokens的ARG 1從兼容的指針類型路過`FOO的ARG 1」從兼容的指針類型

void printTokens(const char** tokens); 
char** readTokens(FILE* stream); 

int main(int argc, char *argv[]) 
{ 
    FILE* fp = fopen(argv[1], "r"); 

    char** tok = readTokens(fp); 
    printTokens(tok); 

    getchar(); 
    return 0; 
} 

出了什麼問題?該放慢參數tokchar**printTokens接收char**

+1

不,'printTokens'接收'爲const char **' 。這是微妙之處。 – Quentin 2015-04-02 20:42:23

+0

另請參見(從本質上重複的問題上的答案鏈接):http://c-faq.com/ansi/constmismatch.html – 2015-04-02 20:43:02

回答

2

const char**char**是不一樣的,因爲const,但你可以使用類型轉換。

因此改變

 printTokens(tok); 

 printTokens((const char**)tok); 
1

您可以修改您傳遞給printTokens()什麼,如:

printTokens(const char **)tok);