簡體   English   中英

與char *類型沖突

[英]Conflicting types with char*

我有一個小程序來測試將char *指針傳入和傳出函數。 當我使用cc進行編譯時,即使所有變量均為char *,我也會收到警告和錯誤消息,指出我的類型沖突。 請指教

#include <stdio.h>

main()
{
    char* p = NULL;

    foo1(p);
    foo2();
}

void foo1(char* p1)
{
}

char* foo2(void)
{
    char* p2 = NULL;

    return p2;
}

p.c:11: warning: conflicting types for ‘foo1’
p.c:7: warning: previous implicit declaration of ‘foo1’ was here
p.c:15: error: conflicting types for ‘foo2’
p.c:8: error: previous implicit declaration of ‘foo2’ was here

您需要在main()函數之前對函數進行原型設計。

例:

void foo1(char *p1);
char* foo2(void);

int main(.......

或者只是將那些功能的主體放在主要功能之上。

正如ghills所說,要修復錯誤,請將函數定義移至main()上方或將函數原型放在此處。

該錯誤的原因是當編譯器看到以下內容時:

foo1(p);
foo2();

在看到foo1()foo2()的聲明或定義之前,它假定這些函數的返回類型為int 在C的早期, int被認為是合理的默認返回類型(在C的最早版本中沒有void類型)。 如今,忽略返回類型被認為是不好的做法,編譯器對此表示抱怨。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM