问题标签 [compile-time]

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 投票
9 回答
19663 浏览

c - 编译时大小的条件

如果涉及的条件为真,我想定义一个宏,sizeof如果它为假,则什么都不做(但仍然编译)。如果预处理器支持sizeof,它将如下所示:

有一些页面(例如http://scaryreasoner.wordpress.com/2009/02/28/checking-sizeof-at-compile-time/)解释了如何在编译时断言sizeof如果编译失败)它失败了),但我看不到将这种方法扩展到我想要的方法。

0 投票
5 回答
2999 浏览

c++ - 编译时的浮点运算

使用编译时常量整数的浮点计算是在编译时还是在运行时执行的?例如,什么时候计算除法运算:

0 投票
5 回答
9501 浏览

c# - 我可以从 csharp 中的编译时环境变量中创建一个常量吗?

我们使用Hudson来构建我们的项目,并且 Hudson 在编译时方便地定义了诸如“%BUILD_NUMBER%”之类的环境变量。

我想在代码中使用这个变量,所以我们可以做一些事情,比如在运行时记录这是什么构建。但是我不能做 System.Environment.GetEnvironmentVariable 因为那是访问运行时环境,我想要的是这样的:

或者

除了我不知道语法。有人可以指出我正确的方向吗?谢谢!

0 投票
3 回答
9455 浏览

objective-c - 在 Objective-C 中检查一个对象是否符合两个独立的协议

在 Objective-C 中,当您声明一个实例变量时,您可以在编译时检查它是否符合分配协议,如下所示:

是否可以在编译时检查分配给变量的对象是否符合两个单独的协议?如:

我知道我可以使用conformsToProtocol:and respondsToSelectoret al 进行运行时检查(在实际使用对象之前我会这样做以增加安全性),并且我可以编写自己的 setter 方法来进行检查,但我想在编译时知道。

0 投票
2 回答
1498 浏览

c# - 是否可以进行编译时检查类型是否标记有 Serializable 属性

具体来说,我们正在使我们的应用程序与进程外会话状态服务器兼容,其中保存在会话中的所有类型都必须是可序列化的。

有没有办法在编译时查看放入 HttpSessionState 的任何类型都标记有 Serializable 属性。类似于此“无效”代码的内容

0 投票
3 回答
1736 浏览

c++ - C++ 类和对象 - 内存

哪个占用内存, aclass还是 an object?而且,是在那个时候compile还是那个execution时候?

谢谢。

0 投票
3 回答
15302 浏览

linux - 在编译时链接共享对象

在 Windows 中,许多 .dll 都带有静态 .lib 对应项。我的理解是 .lib 对应项基本上包含 LoadProcAddress 调用,因此程序员不必自己动手。本质上,节省时间。当我切换到 Linux 时,我假设情况相同,将 .dll 替换为 .so,将 .lib 替换为 .a,但我遇到的情况表明这是错误的,我不知道是什么正在进行:

我正在使用一个作为 .a/.so 对的库。我正在链接 .a,但是当我对生成的二进制文件执行 ldd 时,它不包含对相应 .so 文件的引用。因此,我尝试链接 .so 文件,令我惊讶的是,这有效。此外,当我对生成的二进制文件执行 ldd 时,.so 文件出现了。

所以,我真的很困惑发生了什么。在 Windows 中,我永远不会考虑链接到 .dll 文件。此外,在 Windows 中,如果 .dll 文件带有 .lib 并且我在编译时链接到 .lib,那么我希望在运行时依赖于相应的 .dll。在这种情况下,这两件事都不是真的。

是的,我已经阅读了有关 Linux 中共享对象的基本教程,但我阅读的所有内容似乎都表明我最初的假设是正确的。顺便说一句,我应该提到我正在使用 Code::Blocks 作为 IDE,我知道这会使事情复杂化,但我 99% 确信当我告诉它链接到 .so 文件时,它不仅仅是换出.a 文件,因为生成的二进制文件更小。(加上关于ldd的整个业务......)

无论如何,提前谢谢。

0 投票
4 回答
9457 浏览

c++ - 在 C++ 编译时计算和打印阶乘

上面的程序在编译期间计算阶乘值。我想在编译时而不是在运行时使用 cout 打印阶乘值。我们如何在编译时打印阶乘值?

我正在使用VS2009。

谢谢!

0 投票
3 回答
3828 浏览

c++ - 如何根据编译时参数使用内联函数的不同重载?

我有一个性能关键的内联函数,inline T func(T a, T b, int p). 如果已知 p 为零,则可以对其进行相当多的优化。但是,我不能使用“如果”来惩罚所有其他情况。我想要的只是优化我在编译时知道 p 为零的函数。有没有一种干净的方法可以做到这一点,也许使用模板魔法?

编辑

我不能使用不同命名的函数/不兼容的重载(我不知道如何正确表达),因为代码非常低级。很可能在另一个/未来的处理器上可以使用不同的优化机会。因此,通过将所有低级内容限制在一个函数签名中,我的代码只需重新编译即可使用任何类型的优化。

0 投票
7 回答
1629 浏览

c++ - 编译时检查右移是否是有符号类型的算术运算

我想知道在编译时对有符号类型(例如是否-2 >> 1为)进行操作时检查右移是否是算术的最便携的方法是什么。-1

我的想法是在编译时以某种方式检查这一点并能够检测到这一点,这样我就可以编译不同版本的函数(取决于运算符>>是否真的是算术移位)。

通过阅读主题 验证 C/C++ 签名右移是否是特定编译器的算术?我想到了初始化一个标志的想法

并像这样在运行时对其进行测试:

但是,如果可能的话,我想每次都避免这种分支。为简单起见,假设我想实现一个可移植的算术右移;如果我必须在每次调用函数时都检查它,这将对性能产生巨大影响,所以如果可能的话,我想在编译时进行检查。

如果不存在进行此检查的可移植方法,是否有办法通过尽最大努力检查来做到这一点,例如使用 ifdefs 检查特定编译器/平台?