gpt4 book ai didi

c++ - char* (int) 在 C++ 中是什么意思?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:08 33 4
gpt4 key购买 nike

我正在从事的一个项目中有以下代码行:

char* i2txt(int);

我不太明白它的作用?由于我一知半解,我试图让它与 float 一起工作,所以我将 int 更改为 float ,但这给了我一个错误。

char* i2txt(int);
/*vs*/
char* i2txt(float);

错误信息:

Error LNK2019 unresolved external symbol "char * __cdecl i2txt(float)" (?i2txt@@YAPADM@Z) referenced in function "public: char * __thiscall DapChannel::getDurationTxt(void)" (?getDurationTxt@DapChannel@@QAEPADXZ)  PhotoZ  DapChannel.obj  1   

最佳答案

语句 char* i2txt(int); 前向声明一个函数 i2txt,它接受一个 int 作为输入,并返回一个字符*

什么是前向声明?

如果您在函数声明之前使用它,则会导致错误:

#include <iostream>

int main() {
foo(); // Error: foo not defined
}
void foo() {
std::cout << "Hello, world!";
}

前向声明 基本上声明“这个函数还没有定义,但我保证我最终会定义它。在上面的例子中,它看起来像这样:

#include <iostream>

void foo(); // Forward declaration

int main() {
foo(); // Now we can use it
}

void foo() {
std::cout << "Hello, world!";
}

为什么改成i2txt(float);会报错?

这会导致错误,因为突然之间,没有要调用的 i2txt(int) 函数。因为int可以隐式转换为float,所以编译器仍然允许其他函数调用i2txt(float),但是没有定义>i2txt(float) 曾经提供过,所以有一个链接器错误:

#include <iostream>
char* i2txt(float);

int main() {
std::cout << i2txt(10); // Tries calling i2txt(float)
}

// This provides a definition for i2txt(int), but the linker is still missing a definition for i2txt(float)
char* i2txt(int) {
// ... stuff
}

关于c++ - char* (int) 在 C++ 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56101396/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com