Forward declaration 为什么可以';我不能用不同的类型多次声明变量或函数吗?

Forward declaration 为什么可以';我不能用不同的类型多次声明变量或函数吗?,forward-declaration,multiple-definition-error,using-declaration,Forward Declaration,Multiple Definition Error,Using Declaration,好的,我知道“一个定义规则”,但当我试图在源代码中声明一个具有不同类型的变量时,我遇到了如下错误: int fkc(); void fkc(); 我的意思是这两个语句只是两个声明,而不是定义。好的,每个声明都必须只有一个唯一的定义吗?因为您不能仅仅通过更改返回类型来重载方法。这是不允许的。编译器根据签名来区分函数调用。函数的签名只包括函数名和类似的字符串 < C++ >代码> FUNC(int x…),它不包含C++中的返回类型,不能基于返回类型重载函数。 重载解析会考虑函数名、cv限定符、

好的,我知道“一个定义规则”,但当我试图在源代码中声明一个具有不同类型的变量时,我遇到了如下错误:

int fkc();
void fkc();


我的意思是这两个语句只是两个声明,而不是定义。好的,每个声明都必须只有一个唯一的定义吗?

因为您不能仅仅通过更改返回类型来重载方法。这是不允许的。编译器根据签名来区分函数调用。函数的签名只包括函数名和类似的字符串


< C++ >代码> FUNC(int x…)<代码>,它不包含C++中的返回类型

,不能基于返回类型重载函数。 重载解析会考虑函数名、cv限定符、参数数量及其类型

你可以这样做:

auto fck()
{
    if constexpr(...) return my_int;
    else /* do smth without return */
}

但这当然不是函数重载。

1。这些是函数声明2。这里有什么不清楚的?编译器应该如何确定您要引用的2中的哪一个?