Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何分离几个特殊关键字_C++ - Fatal编程技术网

C++ 如何分离几个特殊关键字

C++ 如何分离几个特殊关键字,c++,C++,通常我只写在标题中或只写在cpp中,但很明显这是错误和不寻常的。因此,最近我开始习惯于将事物分成两个不同的文件 我通常使用以下关键词: 内联 __stdcall 我的问题如下: 我应该把它们放在哪里?仅在标题中?只有来源?二者都 关于它的惯例是什么 我的问题只是关于那些关键词。现在是关于如何普遍地使用鱼叉的问题。我已经知道了基础知识 我认为您应该在.h文件中放置完整的函数签名,以确保阅读您的代码的人能够理解您没有想到的内容,而不必深入.cpp。 此外,快速查看谷歌C++风格指南并没有帮助我找

通常我只写在标题中或只写在cpp中,但很明显这是错误和不寻常的。因此,最近我开始习惯于将事物分成两个不同的文件

我通常使用以下关键词:

  • 内联
  • __stdcall
我的问题如下:

我应该把它们放在哪里?仅在标题中?只有来源?二者都 关于它的惯例是什么


我的问题只是关于那些关键词。现在是关于如何普遍地使用鱼叉的问题。我已经知道了基础知识

我认为您应该在.h文件中放置完整的函数签名,以确保阅读您的代码的人能够理解您没有想到的内容,而不必深入.cpp。
此外,快速查看谷歌C++风格指南并没有帮助我找到关于放置这2个单词的信息,所以这不是一个关键问题。

< P>因为内联函数必须在所有翻译单元中内联(如您所知),最简单的是在标题中声明它。否则,当您在另一个源文件中内联定义它时,可能会意外忘记在一个源文件中内联定义它

事实上,由于内联函数必须在使用它的每个翻译单元中定义,并且定义必须始终相同,因此最简单的方法是在头中定义内联函数,并将头包含在源文件中,而不是在任何源文件中单独定义它

当您在标题中定义内联函数时,通常建议您将其定义为非内联函数(可能看起来有些矛盾)。Tadeusz Kopec提出的建议是好的。您应该在定义处(如我所建议的,在标题处)内联定义函数,而不是在声明处定义函数,这样以后如果希望更改非内联定义,就更容易了。对于非成员函数也是如此,但对于成员函数尤其如此

现在,
\uu stdcall
是一个非标准关键字,因此您必须查看实现的详细信息。文档没有显式地声明它,但是调用方必须知道调用约定,因此它必须在头中。文档明确说明关键字不需要位于函数的越界定义中,因此您可以忽略它


事实上,如果您只在声明中指定它,那么如果您以后想要更改调用约定,就不必去寻找定义。另一方面,如果在更改调用约定时必须更改函数,则在函数定义中显式定义调用约定可以作为提醒。所以,这是一个偏好的问题。

“通常”?为什么需要指定调用约定<代码>内联对于现代编译器来说也几乎不重要。的可能重复,因为我以一种特殊的方式使用WinAPI。WinAPI需要特殊的调用约定。关于内联,我知道我的理由,我只是使用它。这个问题仍然是惯常的形式。帕维尔·帕亚·哈尔比奇:这个话题甚至与我的问题无关。我知道它们存在的原因,问题是关于这两个特殊的关键字。谢谢,最后是一个正常的答案,它不是问为什么,而是试图回答…至于
内联
放置,这里有一个很好的指南:@TadeuszKopec啊,这是内联非静态成员函数的一个很好的指南。