繁体   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