我使用以下代码:

char dest[5];
char src[5] = "test";

printf("String: %s\n", do_something(dest, src));

char *do_something(char *dest, const char *src)
{
    return dest;
}

do_something的实现在这里并不重要. 当我try 编译上面的代码时,我得到以下两个异常:

错误:"do_something"(在printf调用时)的类型冲突

为什么?

推荐答案

你试图在申报前给do_打电话.您需要在printf行之前添加一个函数原型:

char* do_something(char*, const char*);

或者,您需要将函数定义移到printf行的上方.在声明函数之前,不能使用该函数.

C++相关问答推荐

错误:在.h程序中重新定义 struct

为什么下面的C代码会进入无限循环?

减法运算结果的平方的最快方法?

Clang:如何强制运行时错误的崩溃/异常由于-fsanitize=undefined

struct 上的OpenMP缩减

C是否用0填充多维数组的其余部分?

如何在C中使printf不刷新标准输出?

ifdef __cplusplus中的整数文字单引号

指向不同类型的指针是否与公共初始序列规则匹配?

将多项式从文件.txt加载到终端时出现问题

我在C中运行和调试时得到了不同的输出

用C++构建和使用DLL的困惑

如何在c中使用具有不同变量类型的内存分配?

安全倒计时循环

在C程序中使用Beaglebone Black UART的问题

与外部SPI闪存通信时是否应禁用中断?

在C中使用字符串时是否不需要内存分配?

尽管将其标记为易失性,但 gcc 是否优化了我的等待代码?

是什么阻止编译器优化手写的 memcmp()?

free后内存泄漏?