函数原型在 C++ 中是否已过时
Are function propotypes obsolete in c++
我在看一本旧书,里面有函数原型。例如:
#include<iostream>
using std::cout;
int main()
{
int square(int); //function prototype
for(int x = 0; x<=10; x++)
{
cout<<square(x)<<"";
}
int square(int y)
{
return y * y;
}
return 0;
}
但是,在较新的 C++ 教程中,我没有看到提到任何函数原型。在 C++98 之后它们是否已过时?
使用它们的社区准则是什么?
示例:https://www.w3schools.com/cpp/trycpp.asp?filename=demo_functions_multiple
它们并没有过时,但它们大多位于头文件中,而不是 *.cpp 文件中。
它们可能被某些 C++ 教程(例如 learncpp.com)称为“前向声明”。这是谈论它们的页面:https://www.learncpp.com/cpp-tutorial/forward-declarations/
对于像这样在另一个函数中定义一个函数的初学者
int main()
{
//...
int square(int y)
{
return y * y;
}
return 0;
}
不是标准的 C++ 功能。您应该在 main.
之外定义函数 square
如果你不会在for循环之前声明函数square
int square(int); //function prototype
for(int x = 0; x<=10; x++)
{
cout<<square(x)<<"";
}
那么编译器会报错,名字square
没有声明。在 C++ 中,任何名称都必须在使用前声明。
你可以在 main 之前定义函数 square
like
int square(int y)
{
return y * y;
}
int main()
{
//...
}
在这种情况下,main
中函数的声明
int square(int); //function prototype
将是多余的,因为函数定义同时也是函数声明。
What are the community guidelines for using them?
如果没有函数说明符inline
,则具有外部链接的函数只能在程序中定义一次。如果几个编译单元使用同一个函数,那么他们需要访问它的声明。
在这种情况下,函数声明放在 header 中,它包含在需要函数声明的编译单元中,函数定义放在某个模块中。
我在看一本旧书,里面有函数原型。例如:
#include<iostream>
using std::cout;
int main()
{
int square(int); //function prototype
for(int x = 0; x<=10; x++)
{
cout<<square(x)<<"";
}
int square(int y)
{
return y * y;
}
return 0;
}
但是,在较新的 C++ 教程中,我没有看到提到任何函数原型。在 C++98 之后它们是否已过时? 使用它们的社区准则是什么?
示例:https://www.w3schools.com/cpp/trycpp.asp?filename=demo_functions_multiple
它们并没有过时,但它们大多位于头文件中,而不是 *.cpp 文件中。
它们可能被某些 C++ 教程(例如 learncpp.com)称为“前向声明”。这是谈论它们的页面:https://www.learncpp.com/cpp-tutorial/forward-declarations/
对于像这样在另一个函数中定义一个函数的初学者
int main()
{
//...
int square(int y)
{
return y * y;
}
return 0;
}
不是标准的 C++ 功能。您应该在 main.
之外定义函数square
如果你不会在for循环之前声明函数square
int square(int); //function prototype
for(int x = 0; x<=10; x++)
{
cout<<square(x)<<"";
}
那么编译器会报错,名字square
没有声明。在 C++ 中,任何名称都必须在使用前声明。
你可以在 main 之前定义函数 square
like
int square(int y)
{
return y * y;
}
int main()
{
//...
}
在这种情况下,main
中函数的声明int square(int); //function prototype
将是多余的,因为函数定义同时也是函数声明。
What are the community guidelines for using them?
如果没有函数说明符inline
,则具有外部链接的函数只能在程序中定义一次。如果几个编译单元使用同一个函数,那么他们需要访问它的声明。
在这种情况下,函数声明放在 header 中,它包含在需要函数声明的编译单元中,函数定义放在某个模块中。