2.1.73. --list

此选项指示编译器为源文件生成原始列表信息。 缺省情况下,原始列表文件的名称为具有文件扩展名 .lst 的输入文件的名称。

如果在命令行中指定了多个源文件,则仅为指定的前几个文件生成原始列表信息。

用法

原始列表信息通常用于生成带格式的列表。 原始列表文件包含原始源代码行、包含文件转入转出信息以及由编译器生成的诊断消息。 列表文件的每一行都由以下标识行类型的关键字母开头:

N

常规源代码行。 该行的其余部分是源代码行的文本。

X

常规源代码行的扩展格式。 该行的余下部分是文本。 该行出现在 N 行后面,并且仅当该行包含非细微修改时才出现。 注释被视为细微修改,而宏扩展、行接合以及三元组则被视为非细微修改。 在扩展格式行中使用单一空格代替注释。

S

通过 #if 或类似语句跳过的源代码行。 该行的余下部分是文本。

Note

N 标记出结束跳跃的 #else#elseif#endif

L

指示源位置中的变更。 即该行的格式类似于标识预处理程序的指令输出的 # 行:


L line-number "filename" key

其中 key 可以为:

1

用于进入包含文件。

2

用于从包含文件退出。

否则,将省略 key。 原始列表文件行中的第一行始终为标识主输入文件的 L 行。L 行也是 #line 指令的输出,其中将省略 keyL 行指示以下源代码行在原始列表文件中的源位置。

R/W/E

表示诊断消息,其中:

R

表示备注。

W

表示警告。

E

表示错误。

该行的格式为:

type "filename" line-numbercolumn-numbermessage-text

其中 type 可以为 RWE

文件末尾处的错误指示主源文件的最后一行和 0 列号。

命令行错误是文件名为 "<command line>" 的错误。 行号或列号不作为错误消息的一部分显示。

内部错误照常是带有位置信息的错误,并且消息文本以 (Internal fault) 开头。

当诊断消息显示一个列表(例如,重载调用不明确时的所有竞争例程)时,初始诊断行将后跟具有相同完整格式的一行或多行。 但代码字母是初始行中代码字母的小写版本。 这些行中的源位置与相应的初始行相同。

示例


/* main.c */

#include <stdbool.h>



int main(void)

{

    return(true);

}

--list 选项编译此代码会生成原始列表文件:


L 1 "main.c"

N#include <stdbool.h>

L 1 "...\include\...\stdbool.h" 1

N/* stdbool.h */

N

...

N  #ifndef __cplusplus /* In C++, 'bool', 'true' and 'false' and keywords */

N    #define bool _Bool

N    #define true 1

N    #define false 0

N  #endif

...

L 2 "main.c" 2

N

Nint main(void)

N{

N   return(true);

X   return(1);

N}

另请参阅

Copyright © 2007 ARM Limited. All rights reserved. ARM DUI 0348AC
Non-Confidential