我知道标题不是自我解释,但我无法用几句话表达。
无论如何,问题是我有一个C函数,该函数返回由3个整数组成的结构。这是它的定义。

typedef struct {
  uint8_t r;
  uint8_t g;
  uint8_t b;
} Color;
这是功能
Color PPMImage_getPixel(PPMImage *ppmImage, uint32_t x, uint32_t y) {
  // FIXME: Check if (x, y) is in bounds.

  return ppmImage->data[y * ppmImage->width + x];
}

现在,当特定条件失败时,我想返回一个错误值,该错误值告诉调用者该函数遇到了错误,但是由于返回值是具有3个无符号整数的结构,所以我无法执行此操作,例如,我无法设置每个字段都为-1或返回NULL,因为我没有返回指针。有没有一种优雅而有效的方法来做到这一点?

最佳答案

将返回值的类型更改为函数的错误代码,并传递要返回的结构颜色的指针
即:

int PPMImage_getPixel(PPMImage *ppmImage, uint32_t x, uint32_t y, Color * color)
{
 // FIXME: Check if (x, y) is in bounds.
 // TODO: validate color isn't null and valid, otherwise return -1

 (*color) = ppmImage->data[y * ppmImage->width + x];
  return 0;
}

09-25 18:36