【发布时间】:2011-03-15 02:00:03
【问题描述】:
我正在用 C++ 编写一个程序,我使用一些常量数据。我在启动时按程序构建该数据,并且再也不会更改它。我知道理想情况下数据应该是二进制文件中的静态数据,但事实并非如此,因为我必须首先构建它们。
在 C++ 中,我可以使用该数据在类中定义 static consts 成员,或者简单地定义全局 consts。通过这样做,我将在二进制文件中拥有静态数据,但是我将无法对它们的内容进行编程。我将不得不在其他地方构建它们并将结果粘贴到代码中。就我而言,这将是一堆在源文件中丑陋且无意义地编码的二进制数据。
所以我开始怀疑,是否有任何语言支持这种功能,使我能够在程序上定义我的静态数据,但在编译时解决它并嵌入到二进制文件中?任何类型的优化都可以处理这些情况吗?如果生成数据的过程/函数不使用外部参数并且具有可预测的结果,则编译器可以使用结果安全地对其进行优化。编译器会走这条路吗?你知道的任何语言都明确地处理了这个问题?
我知道 C 预处理器,但它确实不兼容图灵,而且它的语法不如它是一个告诉它应该在编译时解析的函数修饰符那样有吸引力。
【问题讨论】:
-
计算数据的过程有多复杂?它一次生成一个元素吗?这将使模板和/或预处理器的工作变得更加容易。
标签: programming-languages macros preprocessor