我已经下载了Arduino的CmdParser库,我在示例代码中运行了以下几行:
CmdBuffer<32> myBuffer;
CmdCallback<5> myCallback; // Object for handling 5 function in SRAM
我对<>
(尖括号)感到困惑。我已经看到<>
用于处理器指令,例如#include <>
,但我从未见过<>
用于传递参数。任何人都可以简单解释这些代码行的实际作用,并指出我可以自己研究这个问题的地方吗?
答案 0 :(得分:2)
在CmdBuffer&lt; 32&gt;的上下文中,尖括号接受对应的类模板的模板参数。模板是c ++的一个特性,可以部分定义类(或函数)。当给出适当的参数时,模板被认为被实例化为一个类,而该类又可以用于实例化一个对象。
与可在运行时动态提供的函数参数相比,必须在编译时知道模板参数。即,一旦程序执行完毕,就不能使用非const int变量将CmdBuffer实例化为各种大小。
类模板的参数可以是类型或值。例如,类模板向量可用于保存可变大小的值数组,但仅在提供数据类型之后。
vector<int> aVectorOfInts;
在您的示例中,类模板具有值参数,而不是类型参数。该值用于定义缓冲区的静态数组的大小。它必须在编译时知道。