gpt4 book ai didi

c++ - 函数声明和定义的一致性

转载 作者:搜寻专家 更新时间:2023-10-31 01:01:19 28 4
gpt4 key购买 nike

我有一个消息来源告诉我:

The source file that defines a function should include the header that contains that function’s declaration. That way the compiler will verify that the definition and declaration are consistent.

我不确定这是怎么回事,我们在谈论什么类型的“一致性”?因为如果定义和声明在返回类型或参数类型/数量上不一致,编译器只会认为我在声明一个单独的函数并且根本不会验证任何东西。

例如如果我有一个头文件 test.h:

 void func();

还有一个源文件testsource.cpp:

 #include <iostream>
#include "test.h"
using namespace std;

void func(int x){
cout << "Hello StackOverflow" << endl;
}

如果我要运行这个程序,编译器只会认为 func() 和 func(int) 是不同的函数,不会对一致性大惊小怪。它指的是什么类型的一致性?

最佳答案

一个有趣的问题。你的“消息来源”[我假设是一个人或一本书,或者......] 是错误的。尽管在头文件中使用与包含函数体的文件相同的基本名称来声明函数是一种常见的约定,但并不要求这样做。

当然,良好的编码标准除外。

你是对的,两个同名但参数不同的函数是完全可以接受的——就像声明一个函数但从不定义它一样(只要你从不调用它。)

C++ 编译器不会让你搬起石头砸自己的脚,但良好的编码习惯可以。

既然您将书中的引述编辑成了问题,我可以指出引述是“应该”而不是“必须”。语言既不强制也不强制执行常识性用法。这只是良好的编程习惯。

另请注意,lint 类型的程序可能会很好地检测并提示这一点,即使编译器没有。

关于c++ - 函数声明和定义的一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29376291/

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