问题标签 [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 投票
1 回答
3531 浏览

actionscript - 错误 1046:找不到类型或不是编译时常量

我正在尝试在 CS6 中为我正在上课的课程制作交互式 Flash 视频。我和教授简单地谈过这个问题,他也无法弄清楚这个问题。奇怪的是它说错误在第 2 行和第 3 行。当我删除这些行上的代码时,它仍然说错误在这些行上。看看我的 AS 并告诉我你的想法。

这是错误消息:

F:\WDMD201\Essay\Essay1.as,第 2 行 1046:找不到类型或不是编译时常量:mc_Dash。

F:\WDMD201\Essay\Essay1.as,第 2 行 1046:找不到类型或不是编译时常量:mc_Drive。

F:\WDMD201\Essay\Essay1.as,第 3 行 1046:找不到类型或不是编译时常量:mc_Gas。

F:\WDMD201\Essay\Essay1.as,第 3 行 1046:找不到类型或不是编译时常量:mc_Start。

F:\WDMD201\Essay\Essay1.as,第 4 行 1046:找不到类型或不是编译时常量:mc_Outside。

F:\WDMD201\Essay\Essay1.as,第 5 行 1046:找不到类型或不是编译时常量:mc_DriveZoom。

0 投票
2 回答
213 浏览

d - D 中的 Ada 风格范围类型

在阅读了这篇关于 Ada 和 C++ 的有趣文章并了解了 D 对 CTFE 和函数的常量参数专业化的支持之后,我想知道在 D 中是否可以比在 C++ 中更容易/更有效地实现 Ada 样式范围类型。有没有人可能已经写过这样的图书馆?

如果这样的范围可以在 D 中有效地实现并且对开发人员友好,它可以用作在需要确定性以及类型和内存安全性(D 已经大放异彩)的领域(例如航空电子和汽车)建立 D 的推动者。D 将因此获得更多开发者的兴趣和更强大的财务支持。

0 投票
1 回答
1556 浏览

c++ - 用于检查编译时常量的静态断言未传递给宏

前言:

ASSERT_FOR_DEFAULT是一个宏,它将显示一个(自定义)断言对话框,以报告命中“默认情况”。是的,这个宏用于运行时断言,而不是编译时断言。但是,我只需要这样,任何常量值(编译时)都不能传递给这个宏。

问题:

以下应该在编译时失败:

是的,程序员可以在任何地方使用它,而不仅仅是defaultswitch-case. 他也可以使用任何未使用的表达式switch。但这不是问题。只需要将非常量传递给这个宏。

没有为这个宏写任何重要的东西,假设它是ASSERT/ assert

我尝试过使用模板(使用它们其他 SFINAE/静态断言!)、数组(如strcpy_s)、拥有的结构YESNO类型等等。但是找不到解决办法!

我正在使用VC2008。我知道static_assertdecltype,但不能使用 C++0x。


编辑(解决方案):

感谢 Arne Mertz 提出的这个可爱的建议。我从中得出了解决方案。 noConstAllowed为所有T&类型重载,如果传递了常量值,将调用另一个重载。两者都有不同的返回类型,因此检查大小。模板版本返回 a bool,它满足任何传递的变量的断言,并且对于任何常量或表达式都失败(因为返回类型将为int)。

0 投票
1 回答
116 浏览

actionscript-3 - hitTestpoint 在动作脚本 3 中给出错误

我正在尝试让 hitTestPoint 工作。当我输入这个时,我得到这个错误:

场景 1 1046:类型未找到或不是编译时常量:mcircle。

这是我的代码:

}

我是一个真正的闪光新手,所以我知道我犯了一些愚蠢的错误。任何帮助将不胜感激:)

0 投票
1 回答
125 浏览

d - 如何检查变量是否在D中声明?

如何检查变量是否存在,即是否已在 D 中声明?

背景是我想使用版本条件但仍然有一个默认值:

我只是假设这在 D 中是可能的,因为它有很多内省......

0 投票
5 回答
8532 浏览

java - 最终变量和编译时间常数之间的差异

最终变量和编译时常量有什么区别?

考虑以下代码

这是什么意思?最终变量何时以及如何赋值?运行时会发生什么,编译时会发生什么?为什么我们要给 switch 一个编译时间常数?java的哪些其他结构需要编译时间常数?

0 投票
2 回答
8231 浏览

c# - 也许是类和可选参数

我在 c# 中有一个 Maybe / Option 类的实现。基本实现是

有一堆我在这里没有包括的扩展方法。这一切都很好。然而,我想实现的标准模式如下,使用 Maybe 来实现可选参数默认值,如 F#

所以我可以

或者

如果 None 可用,则 Else 提供一个值。然而,这在理论上都很好,但是 C# 可选参数必须是编译时常量,这完全破坏了这种模式。

任何人都可以提出一个修复方案来保持模式的意图而不在这里引入可空值或空值吗?

无论如何我可以创建一个编译时间常量来代表 None ,这将与我上面的 Maybe 实现一起工作?

0 投票
4 回答
2670 浏览

c++ - 字符串文字数组中字符串文字的编译时间大小

我希望在编译时找到 C 字符串文字的长度。给定定义:

如何在header_left[2]不使用的情况下找到字符串文字的长度strlen

在这个问题中,Determining the Length of a String Literal中,有一条注释将数组声明为header_left[][4]。我不喜欢使用这种声明,因为字符串的数量倾向于在不改变数量常数的情况下发生变化。我喜欢让编译器计算字符串的数量(参见rows_in_header定义)和每个字符串的长度。

这适用于嵌入式系统,字符串被块写入串行端口。串口函数将指向数据的指针和数据的长度作为参数。串行端口代码针对块写入进行了优化。首选是不使用strlen,因为这会浪费性能时间。

我在 ARM7TDMI 平台上使用 C99 和 IAR Embedded Workshop。
我已包含该c++标签,因为这也涉及 C++,我们将在首次产品发布后将代码迁移到 C++。

0 投票
2 回答
13054 浏览

java - 枚举中的常量表达式

有没有办法将枚举转换为常量表达式?我希望我的 switch 运算符在枚举的值中进行选择,但是我得到了一个编译错误“case 表达式必须是常量表达式”,所以我尝试在一个变量中声明它:

但我仍然得到同样的错误。根据甲骨文的文档http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.28

编译时常量表达式是表示原始类型值或字符串的表达式,它不会突然完成并且仅使用以下内容组成:

•原始类型的文字和字符串类型的文字

所以它不起作用,因为我没有使用文字。我想我必须将其声明为:

但是将它链接到枚举会更好。有没有办法做到这一点?

编辑

原来我不需要使用任何最终变量。它很简单:

直到我看到安德里亚的评论,我才想到。感谢您的回答。

0 投票
0 回答
237 浏览

actionscript-3 - AS3 1046:类型未找到或不是编译时常量:Baddie

我一直在处理的程序有问题

我得到 Level 1, Layer 'Actions', Frame 1, Line 165 1046: Type was not found or is not a compile-time constant: Baddie。

我可以弄清楚为什么。我尝试声明它,但这似乎不起作用

此外,它似乎在朋友做的另一个程序中工作,他的似乎工作正常