【问题标题】:Repeat Code in C Based on Compile time Arguments基于编译时参数在 C 中重复代码
【发布时间】:2020-10-24 12:57:42
【问题描述】:

假设我有一些 C 代码,例如,printf("A"); 我如何根据某个编译时参数重复它 N 次,其中 N 在该编译器参数中传递。例如gcc -D print=N

同样,有没有一种方法可以根据编译时参数/标志传递循环范围?

【问题讨论】:

标签: c++ c


【解决方案1】:

简单地把它放到一个循环中:

for (int i = 0; i < print; ++i)
  printf("A");

print 符号将替换为编译器命令行上指定的值(例如 -Dprint=5),因此循环运行所需的次数。您可以对起始值 0 执行相同的操作,方法是添加另一个 -D 定义以使用不同的范围。

但是,print 对于这样的宏来说并不是一个好名字;惯例是在所有大写字母中使用更长的名称,以避免与例如冲突。函数名。

【讨论】:

    【解决方案2】:

    如何根据某个编译时参数重复它 N 次,其中 N 在该编译器参数中传递

    只需生成一个 C 文件,可能使用另一个脚本(或 metaprogram,您可以用 GuileGPP、C++ 甚至 C 编写)来生成它。相应地配置您的build automation 工具(例如GNU makeninja)。

    记住,你可以#include一个生成的文件。

    有关(C 文件生成器的)示例,请参阅 GNU bisonSWIG

    另见this blog(来自已故的雅克·皮特拉)。

    您也可能对libgccjit 感兴趣。

    【讨论】:

      猜你喜欢
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      相关资源
      最近更新 更多