簡體   English   中英

53:6:警告:功能類型沖突

[英]53:6: warning: conflicting types for function

#include <stdio.h>
#include <string.h>
struct students{
    char name[50];
    int age;
    int height;
};

int main(int argc, char **argv)
{
    struct students manoj;

    strcpy(manoj.name, "manojkumar");
    manoj.age = 15;

    displaymanoj(&manoj); //print testing \n , name , age 

    return 0;
}

void displaymanoj(struct students *ptr) {
    printf("Testing...............DEBUG\n");
    printf("%s\t%d\n", ptr->name,ptr->age);
    printf("END OF TEST: SUCESS -manoj-");
}

我正在學習C,並且在哪里使用指向結構變量的指針起作用。 運行程序時,我得到正確的輸出。 只是我的Geany IDE發出了一些我想知道原因的消息。

我的編譯器消息如下:

您必須在調用函數之前聲明它們。

所以你的程序應該看起來像

// Includes
// Structure

// Function prototype declaration
// This was what you were missing before
void displaymanoj(struct students *ptr);

int main(int argc, char **argv)
{
    ...
}

void displaymanoj(struct students *ptr) {
    ...
}

由於您具有在從main()調用displaymanoj()時看不到的定義, displaymanoj()編譯器隱式聲明一個返回類型為int顯示類型,該返回類型與實際的類型沖突。 請注意,自C99標准以來, 隱式聲明已刪除,並且不再有效。

要解決這個問題:

1)將函數displaymanoj()移到main()的定義上方,或者
2)對displaymanoj()進行前向聲明

暫無
暫無

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

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