标头与C++中的实现不同

The*_*eer 1 c++ header-files

是否有一种机制可以检查标头是否正确遵循实现?

//my_pi.cpp
float my_pi(){
    return 3.14;
}


//my_pi.h
int my_pi();


//main.cpp
#include <iostream>
#include "my_pi.h"

int main()
{
    float returned;
    returned = my_pi();
    cout << returned;
}
Run Code Online (Sandbox Code Playgroud)

这编译没有错误,但它给出了错误的结果.我刚刚开始学习C++,这看起来像是一种非常简单的方法来制作在OOP概念发挥作用时难以追踪的错误(具有大型原型的类).

或者有什么我缺少的东西,能够定义一个不同的标题是一件好事,一个人必须要小心吗?

joh*_*ohn 5

始终在实现它的源文件中包含头文件.这并没有捕捉到所有错误,但大多数错误.例如,它不会检测函数参数中的错误(因为允许多个具有相同名称且仅在参数上不同的函数),但在这种情况下,无论如何都会出现链接器错误.