在C语言中,需要将函数参数或逻辑条件拆分成多行时是否需要反斜杠字符(\)?

In C, is the backslash character (\) required when one needs to split arguments of functions or logical conditions into multiple lines?

我最近看到了这段代码:

static HAL_StatusTypeDef Program_Flash_Page(uint32_t const page_address, \
  void* const pBufferData, uint32_t const nBufferSize) {

  uint32_t Address = page_address;
  uint64_t *DATA_64 = (uint64_t *) pBufferData;
  while (Address < (page_address + nBufferSize)) {

    if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, Address, *DATA_64) == \
      HAL_OK) {
      Address = Address + 8;
      DATA_64++;
    }
    else {
      return HAL_ERROR;
    }

  }

  return HAL_OK;

}

如您所见,反斜杠用于在多行中显示参数列表和逻辑条件。

正如我从 Kernighan 和 Ritchie(第 2 版,第 A.12.2 段,第 207 页)那里了解到的那样,在预处理过程中“通过删除反斜杠和以下换行符来折叠以反斜杠 \ 字符结尾的行”。

我仍然不清楚的是,这种语法是否是强制性的,或者是否可以在编码时使用换行符(按回车键)。

除 Gerhardh 提到的定义多行宏外,斜线是可选的。

#include <stdio.h>

//valid macro
#define BAR(x, y, z) printf("%d %c %f\n", \
                            x, \
                            y, \
                            z);

//invalid macro, this won't compile if uncommented
/*
#define BAR(x, y, z) printf("%d %c %f\n",
x,
    y,
    z);
*/

void foo(int x, char y, float z) {
    printf("%d %c %f\n", x, y, z);
}

int main() {
    //valid
    foo(5, \
        'c', \
        0.0f);

    //also valid
    foo(5,
        'c',
        0.0f);

    //even use of the macro without slashes is valid
    BAR(5,
        'c',
        0.0f);

    return 0;
}