gpt4 book ai didi

在编译时更改预处理值

转载 作者:行者123 更新时间:2023-11-30 18:37:58 25 4
gpt4 key购买 nike

我已经使用预处理器指令编写了一些代码来跳过一些要执行的语句。但是我在 main 中的 C 代码有兴趣更改先前的#定义值并根据条件分配新值,并更改预处理语句的结果在运行时也是如此。简而言之,我必须在运行时更改预处理语句。我怎样才能做到这一点?

最佳答案

In short I have to change the pre processed statements during run time

这是不可能。了解 C preprocessing & cpp 。编译时和运行时是不同的(编译后的代码甚至可以在不同的机器上运行,请阅读有关 cross-compiling 的更多信息)。如果使用 GCC ,使用 gcc -C -E foo.c > foo.ifoo.c 源文件预处理为 foo.i 预处理形式(然后使用编辑器或页面查看生成的 foo.i)

也许您想在运行时加载额外的代码。这对于纯 C99 标准代码是不可能的。也许您的操作系统提供 dynamic loading 。 POSIX 指定 dlopen 。您可能还想使用 JIT compiling在运行时构建机器代码的技术,例如与像 GCCJIT 这样的库, asmjit , GNU lightning , libjit , LLVM ,...

另请阅读 homoiconic语言。考虑使用 Common Lisp 进行编码(例如使用 SBCL )。

也许您想自定义您的GCC编译器 MELT .

关于在编译时更改预处理值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35337580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com