我无法为自己的一生弄清楚为什么它认为这不会起作用:

int neededSize = size + ROW_SIZE;
int offset = neededSize % MIN_BLOCK_SIZE;
int padding = 0;
if(offset != 0){
    padding = MIN_BLOCK_SIZE + offset;amount of padding that we need
}
int requiredSize = neededSize + padding;

错误如下:
src/sfmm.c:63:34: error: statement with no effect [-Werror=unused-value]
     padding = MIN_BLOCK_SIZE - offset;

包含的.h文件中的MIN_BLOCK_SIZE定义:
#define MIN_BLOCK_SIZE 64;

我的文本编辑器在该特定行的减号上显示错误。

让我知道是否需要查看更多代码。

最佳答案

您用最后一个分号定义了MIN_BLOCK_SIZE:

#define MIN_BLOCK_SIZE 64;

由于您的#define,表达式为:
padding = 64; + offset;

因此,这是两个单独的语句。
  • 第一条语句将64分配给变量padding
  • 第二条语句只是+offset;,没有任何作用。
    它只是求值一个被丢弃的值。

  • 错误消息是正确的。

    我相信的意思是来定义
    #define MIN_BLOCK_SIZE 64  // Without the final semi-colon.
    

    那么表达式将是:
    padding = 64 + offset;
    

    关于c - 无效声明-有用值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62203109/

    10-11 10:36