在Visual Studio中进行编译时,编译器似乎会自行输出以下内容:
1>正在生成代码...
这里的“Generating Code”具体是指什么呢?
在Visual Studio中进行编译时,编译器似乎会自行输出以下内容:
1>正在生成代码...
这里的“Generating Code”具体是指什么呢?
它正在执行其所说的操作:生成机器码。许多编译器将C/C++源代码翻译成一些中间内部表示形式,稍后用作生成实际机器码的源代码。Visual C++编译器(像许多其他编译器一样)以批处理方式执行此操作:首先将一堆源文件翻译成该中间表示形式,然后将它们全部转换为机器码(然后开始处理下一批)。这就是当您看到“正在生成代码”消息时发生的情况。
我不知道它用于将源文件拆分成批次的确切逻辑。也许它仅按大小工作:一旦迄今为止生成的所有中间表示形式的总大小达到某个限制,它就会切换到“生成代码”模式。也许还有其他逻辑在那里起作用。
无论如何,请注意,在这种情况下,未经资格认证的术语“代码”并不是指源代码,这意味着它与模板和/或预处理器等没有任何关系。此外,将C源代码称为未经资格认证的“代码”(而不是合格的“源代码”)是一件非常小众的事情,更适合于营销部门而不是实际程序员。在程序员层面上,没有人将C源代码简称为“代码” :)
Visual Studio正在调用链接器LINK.exe,它主要使用目标文件作为输入,生成可执行文件作为输出,但也能够处理与这些文件相关的其他工作。MSDN上的链接器命令行语法
模板实例(以及其他类型的代码)可能会生成代码(在某些情况下可能不会)。