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

c++ - 在 Visual C++ 可执行文件中输出编译时间戳?

如何将编译时间戳信息插入到使用 Visual C++ 2005 构建的可执行文件中?当我执行程序时,我希望能够输出这样的东西:

此版本 XXXX 在 dd-mm-yy, hh:mm 编译。

其中日期和时间反映了项目的构建时间。它们不应该随着程序的每次连续调用而改变,除非它被重新编译。

0 投票
7 回答
79474 浏览

c++ - 检测 CPU 架构编译时

编译 C 或 C++ 代码时找出 CPU 架构最可靠的方法是什么?据我所知,不同的编译器有自己的一组非标准预处理器定义(_M_X86在 MSVS 中__i386____arm__在 GCC 中等)。

有没有一种标准的方法来检测我正在构建的架构?如果没有,是否有各种编译器的此类定义的完整列表的来源,例如带有所有样板#ifdef的标头?

0 投票
4 回答
939 浏览

c++ - 减少C++编译时间的产品?

是否有任何产品可以减少 c++ 构建时间?可以与msvc一起使用吗?

0 投票
4 回答
578 浏览

java - 自动生成值对象

给定一个或多个接口,生成类实现的最佳方法是什么?

类变量应该从接口的 getter 方法派生。理想情况下,将处理接口中的协变返回类型。实现应该通过使用私有最终变量和构造函数实例化来支持不变性。应该生成 equals、hashCode 和 toString 方法。

0 投票
6 回答
2660 浏览

c# - 使用 Intellisense 和编译时检查提取反射的属性名称

行。所以我有一些代码将winForm上的某些控件映射到对象中的某些属性,以便在数据发生某些事情时对控件执行某些事情。一切都很好,工作正常。不是问题。问题是,要将项目添加到映射中,我调用了一个如下所示的函数:

我遇到的问题是,在编译时很难分辨上面的行和下面的行之间的区别:

由于最后一个参数是字符串,因此没有编译时检查或类似的东西会强制字符串本身实际上对应于给定对象上的有效属性名称。此外,诸如 Refactor 和“查找所有引用”之类的东西错过了这种引用,当属性名称本身发生变化时会导致欢闹。所以我想知道是否有某种方法可以改变函数,这样我传入的仍然是以某种方式表示属性名称的字符串,但是编译时会检查实际值。有人说我可以用表达式树做到这一点,但我已经阅读了它们,似乎没有看到联系。我很想做类似的事情:

甚至

会很甜!

有任何想法吗?

0 投票
27 回答
333607 浏览

language-agnostic - 运行时与编译时间

运行时和编译时有什么区别?

0 投票
3 回答
2732 浏览

c# - 在 .NET 中的编译时检查引用/类型是否存在

我最近发现需要在编译时检查是否:a)某个程序集引用存在并且可以成功解析,或者 b)某个类(其完全限定名称已知)已定义。这两种情况对我来说是等价的,所以能够检查其中一种就足够了。有没有办法在.NET/C# 中做到这一点?预处理器指令最初让我觉得可能会有所帮助,但它似乎没有必要的功能。

当然,在运行时检查类型是否存在可以很容易地完成,但不幸的是,在这种情况下这并不能解决我的特定问题。(我需要能够忽略缺少某个引用的事实,从而回退到代码中的另一种方法。)

0 投票
7 回答
210 浏览

compiler-construction - 无法理解有关编译器优化的陈述

我对虚拟机在运行时和编译时的优化感兴趣。我的想法是优化在编译时是最有效和最简单的。

但是,在某些情况下,我的想法似乎是错误的。这在丹尼尔引用的史蒂夫耶吉的声明中很明显

[O] 由聪明的虚拟机在运行时执行优化通常更容易 - -。

为什么在运行时由 VM 执行的优化比在编译时更容易?

0 投票
10 回答
154231 浏览

c++ - C ++获取模板中的类型名称

我正在编写一些模板类来解析一些文本数据文件,因此很可能绝大多数解析错误是由于数据文件中的错误造成的,这些错误大部分不是由程序员编写的,所以需要关于为什么应用程序无法加载的好消息,例如:

解析 example.txt 时出错。[MySectiom]Key 的值(“notaninteger”)不是有效的 int

我可以从传递给模板函数的参数和类中的成员变量中计算出文件、节和键名,但是我不确定如何获取模板函数试图转换为的类型的名称。

我当前的代码看起来像,专门针对纯字符串等:

我宁愿不必为数据文件可能使用的每种类型都进行特定的重载,因为它们有很多......

我还需要一个解决方案,除非发生异常,否则不会产生任何运行时开销,即我想要一个完全编译时的解决方案,因为这段代码被调用了很多次并且加载时间已经变得有些长了。

编辑:好的,这是我想出的解决方案:

我有一个 types.h 包含以下内容

然后我可以在 cpp 文件中为我需要处理的每种类型使用 DEFINE_TYPE_NAME 宏(例如,在定义要开始的类型的 cpp 文件中)。

然后链接器能够找到适当的模板特化,只要它在某处定义,否则抛出链接器错误,以便我可以添加类型。

0 投票
5 回答
4311 浏览

copy - 将文件动态添加到 Visual Studio 部署项目

我一直在拼命寻找这个问题的答案,我觉得我错过了一些明显的东西。

我需要在编译时将一个包含数据文件的文件夹复制到我的部署项目的 TARGETDIR 中。我可以看到如何添加单个文件(即右键单击文件系统并转到添加-> 文件),但我有一个文件夹,里面装满了不断添加的数据文件。我不希望每次编译时都添加新文件。

我尝试使用 PreBuildEvent 复制文件:

复制 $(ProjectDir)..\Data*.* $(TargetDir)Data\

在我构建时失败,错误代码为 1。我不禁觉得我在这里错过了重点。有什么建议么?

提前致谢。

格雷姆