有人能准确地解释一下 C 标准中有关指令的以下定义的含义吗

Can someone explain me exactly what the below definition means in the C standard about directives

我真正需要知道的是在指令开始之前允许使用哪些字符,因为我们都知道我们可以有 换行 字符和 空格 指令开始前的字符 before ( # ) 现在我阅读了关于这个的 C 标准并发现了以下定义解释这个:

A preprocessing directive consists of a sequence of preprocessing tokens that satisfies the following constraints: The first token in the sequence is a # preprocessing token that (at the start of translation phase 4) is either the first character in the source file (optionally after white space containing no new-line characters) or that follows white space containing at least one new-line character. "C standard - read here the definition"

现在我真正需要知道的是: 他们是什么意思

(optionally after whitespace containing no "new-line" characters) or that follows whitespace containing at least one "new-line" character

containing no new-line characters

containing at least one new-line character

我在上面的定义中不明白我需要知道那到底是什么意思,我需要知道

where new-line characters can occur is it before # token or after # token the C standard haven't stated where new-line characters can occur (it only states "containing no new-line characters" and "containing atleast one new-line character") (it haven't stated whether where new-line characters can occur in this case before # token or after # token) even though it have stated where whitespace characters can occur(before # token) in the above situation

这基本上意味着要么 # 在一行的开头,要么在给定行的 # 之前只有空格。

这部分:

either the first character in the source file (optionally after white space containing no new-line characters)

允许在 # 之前有空格,如果它在文件的第一行,而这部分:

or that follows white space containing at least one new-line character.

在任何后续行的 # 之前允许有空格。

例如:

  #include <stdio.h>   // spaces before the first line
  #include <stdlib.h>  // spaces before another line, i.e, spaces and newline before a token
int x;   #include <string.h> // not allowed, other tokens preceed on same line