是否有其他机制可以让预处理器做到这一点:

#define LIMIT  16
#pragma GCC unroll LIMIT
for (size_t ii = 0; ii < LIMIT; ++ii) {
  ...

该代码命中一个错误:

/path/to/my/file.c:100:20 error: 'LIMIT' undeclared (first use in this function)
  100 | #pragma GCC unroll LIMIT
      |                    ^~~~~

GCC documentation说,这要an integer constant expression specifying the unrolling factor.我相信我的宏是一个"整型常量表达式",但是...

我的编译器是:riscv64-unknown-elf-gcc (g2ee5e430018) 12.2.0.

推荐答案

constconstexpr(如果你可以使用C++)似乎可以工作(在https://godbolt.org/上用gcc 13.2测试).

const int x = 5;
#pragma GCC unroll x
for (std::size_t ii = 0; ii < x; ++ii) {

C++相关问答推荐

我可以动态分配具有空类型函数的矩阵吗?

理解没有返回语句的递归C函数的行为

GCC:try 使用—WError或—pedantic using pragmas

Tiva TM4C123GXL的I2C通信

将fget()与strcMP()一起使用不是正确的比较

在C++中头文件中声明外部 struct

为什么GCC C23中的关键字FALSE不是整数常量表达式?

我的程序在收到SIGUSR1信号以从PAUSE()继续程序时总是崩溃()

N的值设置为0或1(未定义的行为),而我正在try 学习realloc和Malloc的用法

在为hashmap创建加载器时,我的存储桶指向它自己

Flose()在Docker容器中抛出段错误

CGO:如何防止在使用CGO在包中包含C头文件时出现多个定义...&q;错误?

这个C程序在工作中途停止获取输入.我收到分段故障(核心转储).我还是不知道问题出在哪里

如何使用C++在控制台中以彩色打印被阻止的客户端

如何使用FSeek和文件流指针在C中查找文件的前一个元素和前一个减go 一个元素

不使用任何预定义的C函数进行逐位运算

当我将偏移量更改为任何非零值时,C中的mmap共享内存出现无效参数错误

System V 消息队列由于某种原因定期重置

使用 GCC 将一个函数中初始化的 struct 体实例通过指针传递到 C 中的另一个函数会产生不同的结果

是否可以在多字 C 类型中的任何位置混合存储和类型限定符?