首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SPL中定义可以跨文件共享的常量?

问如何在SPL中定义可以跨文件共享的常量?
EN

Stack Overflow用户
提问于 2013-07-03 01:40:08
回答 2查看 104关注 0票数 0

自定义运算符可以在其state子句中定义常量,但是如何定义可以跨多个运算符和多个文件使用的常量?

理想情况下,我正在寻找一种在名称空间中定义常量的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-03 09:13:11

您可以定义一个简单的SPL函数来返回一个常量:

代码语言:javascript
复制
namespace my.name.space;
...
float64 MAX_LATITUDE() {return 90.0;}
...
composite MyMainComposite
{
...

这在整个命名空间中都是自动可用的。除了圆括号之外,它的作用与任何常量一样,无论您在哪里使用它。我没有详细研究生成的代码,但我假设SPL或C++编译器将内联它需要的任何东西,确保在运行时没有实际的函数调用开销。

票数 3
EN

Stack Overflow用户

发布于 2013-07-03 01:40:08

目前无法在名称空间中定义常量,因此无法一次定义一个常量并在多个SPL文件中使用它。

对于单个文件,以下是一些选项:

  • 使用混合模式并在Perl代码中定义常量
  • 使用复合参数表达式:

代码语言:javascript
复制
   composite MyMainComposite {
     param
        expression<float64> $TimerInterval : 4.0;  // 4 seconds

另一种选择是编译时选项/参数-参见getCompileTimeValue() and getCompileTimeListValue()。

对于存在于另一个文件中的SPL函数,您必须将它们作为函数参数传递,或者手动保持代码同步。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17432216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档