预定义宏在C中的位置?

预定义宏在C中的位置?,c,compiler-construction,preprocessor,language-concepts,predefined-macro,C,Compiler Construction,Preprocessor,Language Concepts,Predefined Macro,我想知道预定义宏是在哪里定义和驻留的 预定义宏是在编译器或预处理器中定义的,该编译器或预处理器有一个字典,其中包含源代码中的预定义宏 我的意思是,\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>宏在编译器中有一个定义和等价值,并且该定义已经在编译器中做出了,是真的吗?,第3.7章(预定义宏 预定义了几个类似对象的宏;使用它们时不提供它们的定义 比如后来 \uuuuuuuuuuuuuuuuuuuu——此宏以十进制整数常量的形

我想知道预定义宏是在哪里定义和驻留的

预定义宏是在编译器或预处理器中定义的,该编译器或预处理器有一个字典,其中包含源代码中的预定义宏

我的意思是,
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>宏在编译器中有一个定义和等价值,并且该定义已经在编译器中做出了,是真的吗?

,第3.7章(预定义宏

预定义了几个类似对象的宏;使用它们时不提供它们的定义

比如后来

\uuuuuuuuuuuuuuuuuuuu——此宏以十进制整数常量的形式扩展到当前输入行号。虽然我们称它为预定义宏,但它是一个非常奇怪的宏,因为它的“定义”随着每一行源代码的变化而变化



这意味着在任何地方都没有这些宏的具体定义。在预处理期间,C预处理器跟踪其当前正在处理的文件,并相应地替换
\uuuuuuuuuuuuuuuuuu文件
\uuuuuuuuu行
和其他“特殊”宏。

\uuuuuuuuuuuuuuuuuu文件
\uuuuuuuuuuuuuuuuuuuu行
和其他宏在预处理时由预处理器替换,就像所有其他宏一样,它们没有在任何地方定义。您认为这将如何工作?它们内置在预处理器中,有效地充当关键字。例如,对于GCC,其他编译器也会这样做。@Nazim您在这里实际要问什么还很不清楚。当然,预定义宏将以某种方式在预处理器的源代码中显示自己。否则它们就不起作用了。但具体如何做到这一点取决于每种情况下的作者,也可能因实际宏的不同而有所不同。这并不能解释“这些宏从何而来?”。它是用英文编译的吗?还是没有?我不明白为什么没有。预处理器自己提供定义,我认为这很清楚。第一句话是这样说的。你说的“编入”是什么意思?