我正在使用一些常量数据在C ++中编写程序。我在启动时以程序方式构建数据,并且永远不会再次更改它。我知道理想情况下数据应该是二进制文件中的静态数据,但事实并非如此,因为我必须首先构建它们。
在C ++中,我可以在具有该数据的类中定义static const
个成员,或者只是全局const
。通过这样做,我会在二进制文件中有静态数据,但后来我无法对其内容进行编程。我必须在别处构建它们并将结果粘贴到代码中。在我的情况下,它将是一堆二进制数据uglily和nonsenselesly编码在源文件中。
所以我开始怀疑,是否有任何语言支持这种功能,使我能够在程序上定义我的静态数据,但是它在编译时解决它并嵌入二进制文件中?任何一种优化都可以处理这些情况吗?如果生成数据的过程/函数不带外部参数并且具有可预测的结果,则可以使用编译器的结果安全地优化它。编译器是否走这条路?你知道的任何语言都明确地处理了这件事吗?
我知道C预处理器,但它实际上不是图灵兼容的,它的语法不像它是一个函数修饰符那样有吸引力,它告诉它应该在编译时解析。
答案 0 :(得分:0)
C ++模板是图灵完备的,通常用于计算编译时常量。
答案 1 :(得分:0)
构建一个程序来生成数据(你已经拥有它),让它的输出是用C ++编写的,将生成添加到你的Makefile中,并将生成的数据与#include
一起使用。