【发布时间】:2020-02-17 08:59:57
【问题描述】:
这更多是为了清晰或更好地理解编译器的内部工作原理:我开始研究编译器设计和编译器理论。
通常在堆栈上声明数组的大小时,必须在编译时知道它,这是可以理解的,但并非总是如此。
我想知道的是;何时进行此评估?它是否在预编译器、标记器、语法分析等过程中发生?此外,它是否取决于正在使用的特定编译器?最后,此评估的时间点是否指定为语言标准内编译器的任何特定阶段?
伪代码sn-p。 C 或 C++
int main() {
int x[5]; // When does the evaluation of the 5 for the array's size take place
// during the compilation process?
// Does it take place during pre-compiler or normal compilation time.
return 0;
}
【问题讨论】:
-
@HolyBlackCat 这不是我想要的...我会给出一个伪代码 sn-p。
-
我猜是C phase 8(对C++一无所知)
-
我问这个是为了清楚...它必须更多地与编译器的内部工作及其设计有关...以及他们如何解释或评估一个数组,其中它的大小必须是恒定且已知的在编译时...这是在预处理阶段还是在正常编译期间发生?
-
预处理器与数组大小无关。它甚至不明白数组是什么。
-
@FrancisCugler 你的问题有 C 和 C++ 标签,这就是为什么我决定指出 C 和 C++ 之间的行为差异。
标签: c++ c arrays compiler-construction size