CLICK模块的cpp语法

时间:2017-04-11 04:29:22

标签: c++ c++11

我只是想尝试一些“点击”cpp模块。 我来到这个语法

class SimpleQueue : public Element, public Storage { public:
SimpleQueue() CLICK_COLD;
int configure(Vector<String>&, ErrorHandler*) CLICK_COLD;

我想知道这句话是什么“ CLICK_COLD ”?

https://github.com/kohler/click/blob/master/elements/standard/simplequeue.hh

这只是一个文件。但是有多个文件在每个地方使用“CLICK_COLD”。不确定cpp中的语法是什么?

一般来说,我想了解cpp中任何方法或构造函数的含义后 XYZ_YYY 是什么?

1 个答案:

答案 0 :(得分:2)

它被称为Preprocessor Directives。 您可以在 config.h 中找到它的定义:

/* Define macro for cold (rarely used) functions. */
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
# define CLICK_COLD /* nothing */
#else
# define CLICK_COLD __attribute__((cold))
#endif

它的作用是,如果编译器的版本足够高以支持Attribute Syntax,那么使用__attribute__((cold)),或者不执行任何操作。

__GNUC____GNUC_MINOR__告诉the version of the compiler您正在使用的内容。

coldcommon function attributes之一,描述如下:

  

函数的cold属性用于通知编译器该函数不太可能被执行。该功能针对大小而非速度进行了优化,并且在许多目标上,它被放置在文本部分的特殊子部分中,因此所有冷函数都显得紧密相连,从而改善了程序非冷部分的代码局部性。导致在代码内调用冷函数的路径被分支预测机制标记为不太可能。因此,将用于处理不太可能的条件的函数(例如perror)标记为冷,以改进在极少数情况下调用标记函数的热函数的优化是有用的。

总而言之,很少使用CLICK_COLD的每个函数,这有助于编译器进行优化。