链接器/编译器/预处理问题

Linker / Compiler / Pre-processing question

C语言:

1.Assume 我有指令#bla。它未定义。是编译错误还是预处理错误?

2.Assume 我有 2 个 .c 文件:A.c、B.c(仅此而已。没有 .h 或其他任何文件。)。现在,假设在 A.c 中我在全局命名空间中有一个函数。 现在,我在 B.c(不知道 a.c)处使用该函数。它会工作吗?链接器会填补空白吗?我是否需要添加 at A.c func 签名才能使用它?或者我可以使用它吗?

您无需添加函数签名即可使用它。 B.c 不需要了解 A.c 中定义的函数的任何信息。链接器将填补空白。如果您的项目链接器中的 B.c 和 A.c 都与您在 B.c

中使用的 A.c 中的函数相匹配

但是编译器会警告您缺少函数声明。

# 指令与预处理步骤相关。所以这是预处理错误而不是实际的编译错误。