问题标签 [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.
c++ - C++中简单数学表达式的编译时间优化
我有一段代码,它基本上为数组的所有元素添加了一些常数
矩阵的标量类型为unsigned short int
. 我正在探索的其他一些选项如下:
和
第二种解决方案对我来说看起来最易读,但与第一种选择相比,我是否需要支付罚金。是否有任何标准编译器会在编译时预先计算?
我目前正在使用 gcc 4.6.3,但由于对旧代码的某些依赖,我没有使用 C++11。
更新:
根据我对汇编输出的有限了解,我会说编译器没有优化它。即使使用 -std=c++0x 标志,情况也是一样的。
以下是汇编输出:
硬编码文字(见第 26 行)
更新2
无论是否使用 -std=c++0x 标志,使用 -O2 标志都会产生相同的汇编文件。
结论
由于像 -O2 这样的优化标志可以完成正确的工作,因此 Method2 可能是最佳实践。此外,由于这些代码现在是类成员方法的一部分,我最终使用了一个私有 const 变量初始化为std::numeric_limits<MyMatrix::Scalar>::max()/2 + 1
ios - iOS:不同的调试和发布常量,objective-c
我是 Objective-c 和 ios 开发的新手,正在寻找最佳实践。我想有不同的常数BASE_URL
,这取决于调试和生产环境..
我希望它看起来像,例如Constants.m:
和.pch文件:
但是编译器说我在这里错了-NSString * const API_URL = [BASE_URL stringByAppendingString:@"/api"];
Initializer 元素不是编译时常量
c++ - 在标头中声明符号常量而不进行初始化?
在头文件中定义符号常量是常见的做法:
丑陋的。
更好,因为不是预处理器。
更好的是,因为T_Type
带有目的信息,并且编译器可以进行额外的检查(例如,如果所有情况都在 a 中处理switch
)。
可能还有六种变种。不过有一件事......他们都向客户披露了数值。我想隐藏这些值,只是因为它们不重要。但是我能想到的一种方法...
...不适用于 egcase
语句(作为T_FOO
和T_BAR
是常量,但不是编译时常量表达式)。
有没有办法拥有这一切?
- 在标题中声明符号常量而不透露数值,
- 但可用作常量表达式,例如在
switch
语句中?
我的理解水平说“不”,但我知道我并不知道一切。;-)
c# - 如何在编译时获取泛型参数类型名称?
我正在尝试实现一个泛型类。它应该有一个属性,该属性带有一个编译时常量,我想将其设置为参数类型的名称。像这样的东西:
但是因为typeof(T).Name
是在运行时评估的,所以它不起作用。可能吗?
c++ - 如何为编译时已知的参数的多个值编译函数
我正在编写一个 C++ 函数,该函数目前通过模板接收参数。该函数很复杂,但为了简化问题,请考虑如下函数:
但在最终程序中,a
上述函数将在运行时(而不是编译时)知道,但是用户被迫a
在 1 到 5 的范围内提供。换句话说,我可能不知道a
编译时的确切时间,但我确定那a
将是 1、2、3、4 或 5 之一。
我怎样才能将上述函数编译 5 次以获得不同的a
结果,并在运行时选择运行正确的函数?
一种解决方案是定义不同版本的foo
like foo_1
, foo_2
, ... 为不同的 s 编译,a
但这显然会增加复制代码的数量,尤其是在函数很大的时候。有没有更好的解决方案?
编辑
我的目标是避免类似下面的事情,并switch
在运行时决定使用哪一个。
actionscript-3 - 如何为同一工作区中的多个项目设置一次 Flash Builder 编译器常量?
有没有办法链接一些 Flex 或 AS3 编译器选项,以便同一工作区中的多个项目可以共享相同的编译器常量值?
基本上,对于 3 个或更多项目,我需要经常将 "LANG_ENG" 和 "LANG_FR" 更改为true和false 。而不是必须进入每一个,我想要一个改变影响所有的解决方案。
c++ - 为什么 std::make_tuple(7 + N...) 在 C++11 中是合法的?
以下代码在 C++11 中是合法的。
这是什么意思?
c++ - 如何按索引从可变参数模板参数包中提取值?
我想写一个函数magic_get
,它可以通过索引从参数包中提取一个值,例如:
如何实施magic_get
?
c++ - 编译时检查常量
如果我有一个功能
和一些模板元代码
有没有办法写一个包装