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

c - 将时间常数编译为浮点数

将带有双精度的文件转换为浮点数后,编译器 (MSCV2005) 会警告代码常量中从double到的转换,例如float

Even q1, q2are both floats0.5似乎被视为double.

如何适应这种行为,以便所有代码内常量都被视为floats?

0 投票
5 回答
10884 浏览

c++ - Is there no built-in way to compute a power at compile time in C++?

I have the following very simple template. As I learned, ^ is not the exponential operator. Now I'm looking for a way to compute this power. There are many examples with a recursive template on the internet. This is not too difficult.

But I wonder: Is there actually no "built-in" method in C++ to compute this on compile time?

0 投票
2 回答
135 浏览

c - 在编译时定义(和计算)一个 C 常量

假设我的 C 代码使用了一个常数RANGEMAX,它是 10 的最大幂int。我可以用以下方式定义它:

在宏预处理阶段是否有更智能的方法来进行如此简单的计算?

由于这些是“简单”的计算,我更喜欢像我这样的普通人通过阅读代码就能理解的解决方案。

0 投票
1 回答
658 浏览

c++ - const 和 constexpr 最终会是同一个东西吗?

我刚刚阅读了答案

const vs constexpr 变量

并且正在观看关于 C++11/14 特性的 Google 技术讲座,其中据说 constexpr 将来在函数方面可能不是必需的,因为编译器会不断发展以自行解决. 最后,我知道 Java 编译器和 JVM 努力找出类(或任何变量)在构造后是不可变的 - 无需您明确表示 - 并基于此事实进行各种邪恶的优化。

所以,问题来了: const 和 constexpr 的命运最终是一样的吗?也就是说,即使不能保证编译器进行运行时初始化等,它最终是否会尽可能(基本上)这样做?当这种情况发生时,其中一个关键字不会是多余的吗?(就像内联正在成为,也许)?

0 投票
2 回答
2249 浏览

java - 我可以在不将其硬编码为字符串文字的情况下将类的名称作为编译时常量吗?

我正在开发注释处理器。此代码编译:

但是,我对字符串常量“sand.Foo”不满意(在这种情况下不是太多,但对于未来来说更普遍)。

如果Foo重命名或移动到另一个包,此代码仍然可以编译,但它不会工作。

我想做类似的事情:

这样,如果 Foo 的名称更改,编译将失败,并且必须有人更正文件。

但这不起作用,因为 aClass不是 a String。所以我尝试了:

但是编译器不认为这是一个常量表达式,在这种情况下这是必需的,所以它也不起作用。

有没有办法在编译时将类文字强制转换为其名称?

0 投票
3 回答
327 浏览

c++ - C++ 中根据类型大小设置编译时常量的最佳方法是什么?

我在想其中之一:

或者

另外,如何使用第二种方法引发编译时错误?

0 投票
1 回答
527 浏览

java - 从外部值定义编译时常量

我想在编译时分配的每个 jar 文件的主类中定义一个版本号,就像在 C 中使用带有外部文件值的 #include 语句可以轻松完成的操作一样。我只想在该外部位置设置一个值,因此在我更改它之前编译/构建的任何 jar 文件都会获得相同的值。

我的第一个想法是在一个通用类中定义它,然后像这样简单地引用它:

我创建一个 Base.java 文件:

然后我编译 Base.java 并将其打包。

然后我创建一个 Module1.java 文件:

但当然,如果不导入 Base 类,这将无法编译,所以我将其插入到 Module1 类之前:

然后我编译 Module1.java 并将其 jar 起来,然后执行它;正如预期的那样,它返回:

到目前为止,一切都很好。但随后我编辑 Base.java 文件并将版本值更改为不同的值,例如“1.3.0”,然后编译 Base.java 并将其打包。

现在我想创建一个 Module2.java 文件:

我编译并 jar 了 Module2,并正确执行它返回:

也很好。但作为一个健全的检查,我希望(想要/希望)Module1 返回与以前相同的结果,所以我重新运行 Module1,但假的!它返回:

关于如何解决这个问题的任何建议?所以模块中的版本保持在编译时的状态,而不是在运行时的每个会话期间设置?

0 投票
1 回答
10052 浏览

java - 在 Java 案例语句中使用变量

我正在为计算器制作表达式解析器。表达式将包含一个变量,例如,用户可以输入“x + 2”或“y^2”。我有一个 switch 语句,switch 语句中的一种情况在检测到变量时会执行某个操作:

最初,我在上面的例子中硬编码了一个值'x',但我想让用户选择他们使用哪个变量,所以在解析函数中添加了一个 char 参数,并将其命名为 variableSymbol。这是函数的参数:

但是 Java 不允许变量作为 switch 语句中的 case。有没有办法解决?避免重写 switch 语句的解决方案是最好的,因为它有数百行长。谢谢您的帮助。

0 投票
1 回答
700 浏览

f# - 无法在 F# 中创建列表文字

我有以下类型

我收到一个编译时错误,上面写着:

这不是有效的常量表达式或自定义属性值

我真的不知道这里出了什么问题。

0 投票
2 回答
1777 浏览

c++ - 关于指针值是编译时常量的困惑

在 C++ 中,指针值可以是编译时常量。这是真的,否则,非类型模板参数constexpr将不适用于指针。但是,据我所知,静态存储的函数和对象的地址(至少)在链接时而不是编译时是已知的。下面是一个插图:

主文件

a.cpp

我只是想知道a编译时如何知道的地址main.cpp。我希望有人可以向我解释一下。

特别是,考虑到这个

存储空间应该如何arr分配?

PLUS:这个机制似乎相当强大。即使我启用了Randomized Base Address,也会获得正确的输出。