C:传入函数时将void*赋给自身

Vol*_*lkA 2 c pointers

我正在阅读LZMA SDK源代码并注意到他们将指针传递给方法给自己 - 例如(来自SDK,C/Util/7z/7zAlloc.c):

void *SzAlloc(void *p, size_t size)
{
  p = p;     <-- !
  if (size == 0)
    return 0;
  #ifdef _SZ_ALLOC_DEBUG
  fprintf(stderr, "\nAlloc %10d bytes; count = %10d", size, g_allocCount);
  g_allocCount++;
  #endif
  return malloc(size);
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释他们为什么这样做?

Vic*_*cky 8

避免编译器警告未使用的参数.

  • 在这些情况下,我更喜欢删除参数名称,如"void*SzAlloc(void*,size_t size)",但我不确定它是否是一个普遍有效的解决方案. (5认同)