C 预处理器 for 循环

标签 c loops for-loop c-preprocessor

我是预处理器的新手,我很少使用它,所以这个问题可能看起来很愚蠢。在我的 C 程序中,我发现在编译时已知固定开始和结束的 for 循环会导致一些性能问题。我通过手动推出它暂时解决了这个问题,但这似乎有点脏。有没有办法告诉预处理器把这个:

for(int i = 0; i < 8; i++)
{
    doSomeThingWithI(i, [...]);
    doSomeMoreStuffWithIt(i, [...]);
    foo();
    [...]
}

进入这个:

doSomeThingWithI(0, [...]);
doSomeMoreStuffWithIt(0, [...]);
foo();
[...]

doSomeThingWithI(1, [...]);
doSomeMoreStuffWithIt(1, [...]);
foo();
[...]

[...]

重要的是我必须在循环中使用“i”。

最佳答案

您总是可以像这样对其进行硬编码(将 printf 替换为您的函数):

#include <stdio.h>

#define LOOP_8(X) X X X X X X X X

int main() {
   int i = 0;
   LOOP_8(printf("Loop number %d\n", i++);)
}

但是在实际代码中使用它可能太丑陋了。

关于C 预处理器 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42317936/

相关文章:

java - for while if 循环嵌套错误消息,如果没有找到

ios - Swift 中的核心数据 : Only saving last object in a for loop

c++ - 在 C 接口(interface)中使用 shared_ptr?

loops - Haskell 的 EitherT 发生了什么?

php - 多行插入插入 2 行额外的 0

带有 characterAtIndex 的 Objective-C NSString for 循环

c - scanf在for循环下的工作

c - 旧的 DOS C 编译器是否将 double 实现为 32 位?

c - 覆盖 C 数组中的空字符

c - 正确使用 sysfs_notify_dirent()