首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译时为ANSI-C创建查找数组?

编译时为ANSI-C创建查找数组?
EN

Stack Overflow用户
提问于 2010-03-19 01:09:59
回答 3查看 793关注 0票数 3

以前的程序员更喜欢生成大型查找表(常量数组)来节省运行时CPU周期,而不是动态计算值。他通过创建定制的Visual C++项目来做到这一点,这些项目对于每个单独的查找表都是唯一的……它生成数组文件,然后将其包含在一个完全独立的ANSI-C微控制器(Renesas)项目中。

这种方法对于他最初的计算假设来说很好,但是当需要修改输入参数时就变得单调乏味了,需要我重新编译所有的可视C++项目,并将这些文件重新导入到ANSI-C项目中。我想要做的是将Visual ANSI源代码直接移植到C++ -C微控制器项目中,并让编译器创建数组表格。

所以,我的问题是: ANSI-C编译器可以在编译时计算和生成查找数组吗?如果是这样的话,我应该怎么做呢?

提前感谢您的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-19 01:29:25

有什么原因你不能将他的代码生成架构导入到你的构建系统中吗?

我的意思是,在make中我可能会考虑这样的事情:

代码语言:javascript
复制
TABLES:=$(wildcard table_*)
TABLE_INCS:=$(foreach dir,$TABLES,$dir/$dir.h)
include $(foreach dir,$TABLES,dir/makefile.inc)

$MAIN: $(SRS) $(TABLE_INCS)

其中每个table_*都包含一个完整的代码生成项目,该项目的唯一目的是构建table_n/table_n.h。在每个表目录中还有一个名为makefile.inc的makefile片段,它为生成的包含文件提供了依赖行,现在我已经删除了递归性。

正确地完成(这个实现还没有完成,部分原因是这样更清晰,但主要是因为我很懒),您可以编辑table_3/table_3.input,在主目录中输入make,重新构建table_3/table_3.h,并以增量方式重新编译程序。

票数 4
EN

Stack Overflow用户

发布于 2010-03-19 01:12:13

我猜这取决于您需要查找的值的类型。如果计算每个值所需的处理超出了常量表达式计算所能提供的范围,那么您就会遇到问题。

票数 1
EN

Stack Overflow用户

发布于 2010-06-20 04:18:30

查看Boost预处理器库。它是为C++编写的,但据我所知,这两个预处理器几乎完全相同,它可以做这类事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2471880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档