自定义运算符可以在其state
子句中定义常量,但是如何定义一个可以跨多个运算符和跨多个文件使用的常量?
理想情况下,我正在寻找一种在命名空间中定义常量的方法。
您可以定义一个简单的 SPL 函数来返回一个常量:
namespace my.name.space;
...
float64 MAX_LATITUDE() {return 90.0;}
...
composite MyMainComposite
{
...
这在整个命名空间中自动可用。除了括号之外,无论你在哪里使用它,它都像任何常量一样工作。我没有详细查看生成的代码,但我假设 SPL 或 C++ 编译器将内联它需要的任何内容,确保在运行时没有实际的函数调用开销。
目前无法在命名空间中定义常量,因此无法定义一次常量并在多个 SPL 文件中使用。
对于单个文件,这里有一些选项:
composite MyMainComposite {
param
expression<float64> $TimerInterval : 4.0; // 4 seconds
另一个选项是编译时选项/参数——参见getCompileTimeValue() 和 getCompileTimeListValue()。
对于存在于另一个文件中的 SPL 函数,您必须将它们作为函数参数传递,或者手动保持代码同步。