问题标签 [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 回答
765 浏览

c++ - C++中简单数学表达式的编译时间优化

我有一段代码,它基本上为数组的所有元素添加了一些常数

矩阵的标量类型为unsigned short int. 我正在探索的其他一些选项如下:

第二种解决方案对我来说看起来最易读,但与第一种选择相比,我是否需要支付罚金。是否有任何标准编译器会在编译时预先计算?

我目前正在使用 gcc 4.6.3,但由于对旧代码的某些依赖,我没有使用 C++11。

更新:

根据我对汇编输出的有限了解,我会说编译器没有优化它。即使使用 -std=c++0x 标志,情况也是一样的。

以下是汇编输出:

使用带有 -std=c++0x 标志的方法 2

硬编码文字(见第 26 行)

更新2

无论是否使用 -std=c++0x 标志,使用 -O2 标志都会产生相同的汇编文件。

结论

由于像 -O2 这样的优化标志可以完成正确的工作,因此 Method2 可能是最佳实践。此外,由于这些代码现在是类成员方法的一部分,我最终使用了一个私有 const 变量初始化为std::numeric_limits<MyMatrix::Scalar>::max()/2 + 1

0 投票
2 回答
869 浏览

ios - iOS:不同的调试和发布常量,objective-c

我是 Objective-c 和 ios 开发的新手,正在寻找最佳实践。我想有不同的常数BASE_URL,这取决于调试和生产环境..

我希望它看起来像,例如Constants.m

.pch文件:

但是编译器说我在这里错了-NSString * const API_URL = [BASE_URL stringByAppendingString:@"/api"];

Initializer 元素不是编译时常量

0 投票
3 回答
349 浏览

c++ - 在标头中声明符号常量而不进行初始化?

在头文件中定义符号常量是常见的做法:

丑陋的。

更好,因为不是预处理器。

更好的是,因为T_Type带有目的信息,并且编译器可以进行额外的检查(例如,如果所有情况都在 a 中处理switch)。

可能还有六种变种。不过有一件事......他们都向客户披露了数值。我想隐藏这些值,只是因为它们不重要。但是我能想到的一种方法...

...不适用于 egcase语句(作为T_FOOT_BAR是常量,但不是编译时常量表达式)。

没有办法拥有这一切?

  • 在标题中声明符号常量而不透露数值,
  • 但可用作常量表达式,例如在switch语句中?

我的理解水平说“不”,但我知道我并不知道一切。;-)

0 投票
4 回答
148 浏览

c# - 为什么将 null 转换为类型以进行方法选择有效?

根据C#的答案:将null传递给重载方法-调用哪个方法?,空值似乎带有类型信息。其实我也可以用

哪个产量

方法输出(TypeA a):
方法输出(TypeB b):

这里发生了什么?

0 投票
1 回答
829 浏览

c# - 如何在编译时获取泛型参数类型名称?

我正在尝试实现一个泛型类。它应该有一个属性,该属性带有一个编译时常量,我想将其设置为参数类型的名称。像这样的东西:

但是因为typeof(T).Name是在运行时评估的,所以它不起作用。可能吗?

0 投票
1 回答
111 浏览

c++ - 如何为编译时已知的参数的多个值编译函数

我正在编写一个 C++ 函数,该函数目前通过模板接收参数。该函数很复杂,但为了简化问题,请考虑如下函数:

但在最终程序中,a上述函数将在运行时(而不是编译时)知道,但是用户被迫a在 1 到 5 的范围内提供。换句话说,我可能不知道a编译时的确切时间,但我确定那a将是 1、2、3、4 或 5 之一。
我怎样才能将上述函数编译 5 次以获得不同的a结果,并在运行时选择运行正确的函数?
一种解决方案是定义不同版本的foolike foo_1, foo_2, ... 为不同的 s 编译,a但这显然会增加复制代码的数量,尤其是在函数很大的时候。有没有更好的解决方案?

编辑
我的目标是避免类似下面的事情,并switch在运行时决定使用哪一个。

0 投票
2 回答
370 浏览

actionscript-3 - 如何为同一工作区中的多个项目设置一次 Flash Builder 编译器常量?

有没有办法链接一些 Flex 或 AS3 编译器选项,以便同一工作区中的多个项目可以共享相同的编译器常量值?

在此处输入图像描述

基本上,对于 3 个或更多项目,我需要经常将 "LANG_ENG" 和 "LANG_FR" 更改为truefalse 。而不是必须进入每一个,我想要一个改变影响所有的解决方案。

0 投票
1 回答
738 浏览

c++ - 为什么 std::make_tuple(7 + N...) 在 C++11 中是合法的?

以下代码在 C++11 中是合法的。

这是什么意思?

0 投票
1 回答
3425 浏览

c++ - 如何按索引从可变参数模板参数包中提取值?

我想写一个函数magic_get,它可以通过索引从参数包中提取一个值,例如:

如何实施magic_get

0 投票
2 回答
258 浏览

c++ - 编译时检查常量

如果我有一个功能

和一些模板元代码

有没有办法写一个包装