问题标签 [compile-time-constant]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
7081 浏览

java - 所有编译时常量都内联吗?

假设我有这样的课程:

我的应用程序中的许多其他类都在使用这些选项。现在,我想单独更改其中一个选项并仅部署已编译的类。但是,如果这些字段在消费者类中是内联的,这将变得不可能,对吧?

是否有任何选项可以禁用编译时常量的内联?

0 投票
4 回答
1782 浏览

c - 静态初始化变量(在编译时)

1)我的 C 算法中有很多常量。2)我的代码在浮点和定点都有效。

现在,这些常量由函数 float2fixed 初始化,因此在浮点中它什么也不做,而在定点中,它找到它们的定点表示。例如,如果工作在浮点数中,0.5f 保持 0.5f,而它使用 pow() 例程,如果工作在定点上,则变为 32768,定点表示为 Qx.16。

这很容易维护,但实际上需要花费大量时间来计算这些定点常量(pow 是一个浮点函数)。在 C++ 中,我会使用一些元编程,因此编译器会在编译时计算这些值,因此在运行时不会受到影响。但在 C 中,这是不可能的。或者是吗?有人知道这样的技巧吗?有没有足够聪明的编译器来做到这一点?

期待任何答案。

一个

0 投票
10 回答
21361 浏览

c - 我可以在 c 的编译时计算 pow(10,x) 吗?

是否可以在编译时计算 pow(10,x) ?

我有一个不支持浮点和慢整数除法的处理器。我试图在编译时执行尽可能多的计算。x如果我同时传递和作为参数,我可以显着加快一个特定函数的速度C/pow(10,x)(x 和 C 始终是常量整数,但对于每次调用它们都是不同的常量)。我想知道是否可以通过引入一个1/pow(10,x)自动执行的宏而不是强迫程序员计算它来使这些函数调用更不容易出错?

有预处理器技巧吗?我可以强制编译器优化库调用吗?

0 投票
5 回答
2738 浏览

unit-testing - 有没有办法在单元测试中覆盖 Perl“使用常量”?

我有一个 Perl 模块,我声明了一些常量:

在实时操作中,常量永远不会改变,但我希望能够在我的单元测试中修改它,例如将其设置为~/project/testdata/. 有没有办法做到这一点而不必使用全局可变变量?

我可以Test::MockObject在 上使用constant吗?

0 投票
2 回答
369 浏览

flash - 如何为每个按钮动态创建按钮操作 - 第 2 部分

你好,闪光的朋友们:)

我在 StackOverFlow 提出的第一个问题就是处理这个问题,我有一个数组,它创建了几个不同的按钮。但是我不知道如何为它们分配操作: 如何为每个按钮动态创建按钮操作 - 第 1 部分

感谢Joel Hooks,我能够让我的代码正常工作。然而这一次,我没有将导入的图形用作我的库中的类,而是通过绘制渐变*(不需要导入 jpg)*来创建影片剪辑。现在我又遇到了另一个可怕的“非编译时间常数”错误。我相信这与我如何尝试确定单击或翻转的按钮实例有关。

上一个按钮创建(工作)代码:

for (var i:Number=0; i < myXMLArray.length; i++) { navButton=new NavButton ; navButton.name="按钮" + i; navButton.x=i * navSIZE; navButton.y=navBtnY; navButton.buttonMode=true; thumbsMov.addChild(navButton);

按钮.push(navButton); 按钮[i].addEventListener(MouseEvent.MOUSE_UP,handleButtonClick); 按钮[i].addEventListener(MouseEvent.ROLL_OVER,handleButtonOver); 按钮[i].addEventListener(MouseEvent.ROLL_OUT,handleButtonOff); }

以前的侦听器(工作)代码:

var button:NavButton = event.target as NavButton; var id:Number = Number(button.name.split("button") 1 ); if(button) TweenLite.to(buttonRolls[id], .4, {alpha:1, ease:Strong.easeOut}); cataText[id].defaultTextFormat = a12Green; cataText[id].text = myXMLArray[id].id; }

当前按钮创建代码:

}

当前按钮侦听器代码:

}

只有在注释掉以下行时,当前电影才会正常运行:

因为这就是导致出现非编译时间常数错误的原因。但是,通过删除该行,所有按钮都是 button1,而不是动态创建的 2 个名为 button0 和 button1 的按钮。

此处的任何帮助或指示将不胜感激!提前感谢您查看我的代码。

0 投票
3 回答
395 浏览

c++ - 帮助类型特征

假设我们有以下模板类

我们不能改变 Wrap。这很重要。

假设有派生自 的类Wrap<T>。例如,

我们也不能改变这些类。以上所有课程都是第 3 方。他们不是我的。

我需要以下编译时间type_traits

我需要什么?

0 投票
3 回答
181 浏览

c++ - 具有数组分配的编译器的不同行为

与 MSVC++ 2008 相比,我最近发现 g++ 的一个有趣行为。考虑这个小程序:

会编译吗?你怎么看?根据我对 C(或 C++)的了解,这不应该编译,因为我可以使用我想要的任何整数调用函数 doSomething(),因此无法在编译时确定 iTest 数组的大小。但是,当我尝试用 g++ 编译它时,它工作得很好。现在我可以理解这里可能发生的事情了——编译器注意到我只在传递一个编译时常量作为参数时调用了这个函数。这里正在进行一些严重的优化......但是当我尝试使用 MSVC++ 2008 编译它时,我得到了这个:

我的问题是:这如何符合语言的定义(C 标准(C++ 标准))?g++做这样的优化是不是很好(在这种情况下很容易看到,但是我第一次遇到它,它是在一个大项目中,乍一看并没有多大意义)。

0 投票
3 回答
5188 浏览

c++ - C++ 编译时常量检测

在某些情况下,库源可用,它通常必须支持可变参数,但实际上这些参数通常是常量。

然后可以通过对常量参数的特殊处理来优化事物(例如,使用静态数组而不是堆分配),但为此有必要首先确定某些东西是否是常量(或者可能定义一些宏,但不太方便)。

所以这是一个有效的实现。

更新:也在这里:http ://codepad.org/ngP7Kt1V

  1. 它真的是一个有效的 C++ 吗?
  2. 有没有办法摆脱这些宏?(is_const() 不能是函数,因为函数依赖在数组大小表达式中不起作用;它也不能是模板,因为它也不接受可变参数。)

更新:这是一个更像预期用途的更新。如果不为 0 ,编译器不会为if(N==0)分支生成任何代码。N同样,如果我们愿意,我们可以切换到完全不同的数据结构。当然它并不完美,但这就是我发布这个问题的原因。

0 投票
1 回答
585 浏览

actionscript-3 - 在运行时获取编译时变量

我正在尝试使用“定义”mxmlc 编译器选项将编译时常量嵌入到我的 SWF 文件中。

如果我将它“硬编码”到我的代码库中,我可以访问这个变量,如下所示:

但是,我希望能够在运行时使用 getDefinitionByName() 之类的方法来执行此操作:

这会引发以下错误:

有谁知道在运行时在命名空间中加载编译时常量的方法?

0 投票
14 回答
267329 浏览

java - Java switch 语句:需要常量表达式,但它是常量

所以,我正在研究这个有一些静态常量的类:

然后,我想要一种基于常量获取相关字符串的方法:

但是,当我编译时,constant expression required3 个案例标签中的每一个都出现错误。

我知道编译器需要在编译时知道表达式才能编译开关,但为什么不是Foo.BA_常量?