このページを編集する際は,編集に関する方針に従ってください.[]
概要[]
- gcc-4.1.0/gcc/tree-pretty-print.cにて定義
- 変数宣言のプリント
引数[]
- pretty_printer *buffer
- tree t
- int spc
- int flags
実装[]
1564 /* Print the declaration of a variable. */
変数の宣言をプリント
1565
1566 static void
1567 print_declaration (pretty_printer *buffer, tree t, int spc, int flags)
1568 {
~
*インデント(空白spc個)
1569 INDENT (spc);
1570
~
*変数を修飾する部分
1571 if (TREE_CODE (t) == [[TYPE_DECL>enum tree_code]])
1572 pp_string (buffer, "typedef ");
1573
1574 if (CODE_CONTAINS_STRUCT (TREE_CODE (t), [[TS_DECL_WRTL>TS_ENUM_NAME]]) && DECL_REGISTER (t))
1575 pp_string (buffer, "register ");
1576
1577 if (TREE_PUBLIC (t) && DECL_EXTERNAL (t))
1578 pp_string (buffer, "extern ");
1579 else if (TREE_STATIC (t))
1580 pp_string (buffer, "static ");
1581
~
1582 /* Print the type and name. */
型と名前をプリント
~
*配列
1583 if (TREE_CODE (TREE_TYPE (t)) == [[ARRAY_TYPE>enum tree_code]])
1584 {
1585 tree tmp;
1586
1587 /* Print array's type. */
配列の型をプリント
1588 tmp = TREE_TYPE (t);
1589 while (TREE_CODE (TREE_TYPE (tmp)) == [[ARRAY_TYPE>enum tree_code]])
1590 tmp = TREE_TYPE (tmp);
1591 dump_generic_node (buffer, TREE_TYPE (tmp), spc, flags, false);
1592
1593 /* Print variable's name. */
変数の名前をプリント
1594 pp_space (buffer);
1595 dump_generic_node (buffer, t, spc, flags, false);
1596
1597 /* Print the dimensions. */
配列の大きさのプリント
1598 tmp = TREE_TYPE (t);
1599 while (TREE_CODE (tmp) == [[ARRAY_TYPE>enum tree_code]])
1600 {
1601 dump_array_domain (buffer, TYPE_DOMAIN (tmp), spc, flags);
1602 tmp = TREE_TYPE (tmp);
1603 }
1604 }
~
*関数
1605 else if (TREE_CODE (t) == [[FUNCTION_DECL>enum tree_code]])
1606 {
1607 dump_generic_node (buffer, TREE_TYPE (TREE_TYPE (t)), spc, flags, false);
1608 pp_space (buffer);
1609 dump_decl_name (buffer, t, flags);
1610 dump_function_declaration (buffer, TREE_TYPE (t), spc, flags);
1611 }
~
*変数
1612 else
1613 {
1614 /* Print type declaration. */
宣言のプリント
1615 dump_generic_node (buffer, TREE_TYPE (t), spc, flags, false);
1616
1617 /* Print variable's name. */
変数の名前のプリント
1618 pp_space (buffer);
1619 dump_generic_node (buffer, t, spc, flags, false);
1620 }
1621
~
*アセンブリ言語で定義されている
1622 if (TREE_CODE (t) == [[VAR_DECL>enum tree_code]] && DECL_HARD_REGISTER (t))
1623 {
1624 pp_string (buffer, " __asm__ ");
1625 pp_character (buffer, '(');
1626 dump_generic_node (buffer, DECL_ASSEMBLER_NAME (t), spc, flags, false);
1627 pp_character (buffer, ')');
1628 }
1629
~
1630 /* The initial value of a function serves to determine wether the function
1631 is declared or defined. So the following does not apply to function
1632 nodes. */
1633 if (TREE_CODE (t) != [[FUNCTION_DECL>enum tree_code]])
1634 {
1635 /* Print the initial value. */
初期値のプリント
1636 if (DECL_INITIAL (t))
1637 {
1638 pp_space (buffer);
1639 pp_character (buffer, '=');
1640 pp_space (buffer);
1641 dump_generic_node (buffer, DECL_INITIAL (t), spc, flags, false);
1642 }
1643 }
~
1644
1645 pp_character (buffer, ';');
1646 }