如何分隔几个特殊关键字

时间:2015-12-31 11:06:20

标签: c++

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

我通常使用这些关键字:

  • 内联
  • __ STDCALL

我的问题如下:

我应该把它们放在哪里?只在标题?只在源头?都? 关于它的常规惯例是什么?

我的问题只是关于这些关键词。它现在关于如何普遍地对它们进行表达。我知道已经知道了基础知识!

2 个答案:

答案 0 :(得分:3)

由于内联函数必须在所有翻译单元中内联(正如您从 basics 所知),因此最简单的方法是在标题中将其声明为内联。否则,您可能会意外忘记在一个源文件中内联定义它,而您在另一个源文件中将其内联定义。

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

在标题中定义内联函数时,通常建议将其定义为脱节(可能看似矛盾)。 Tadeusz Kopec建议的guideline很好。您应该在定义中定义函数内联(在标题中,如我所建议的那样),但不要在声明中定义,以便稍后如果您愿意,更容易更改非内联定义。对于非成员函数也是如此,但对于成员函数尤其如此。

现在,__stdcall是非标准关键字,因此您必须查看实施的documentation。文档没有明确说明它,但调用者必须知道调用约定,因此它必须在标题中。文档明确指出关键字不需要在函数的外联定义中,因此您可以省略它。

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

答案 1 :(得分:1)

我想你应该在.h文件中放置完整的函数签名,以确保阅读代码的人能够理解你没有想到的内容而无需深入研究.cpp。 另外,快速查看Google C ++风格指南并没有帮助我找到有关放置这两个单词的信息,因此这不是一个至关重要的问题。