GCC Wikia
Advertisement

このページを編集する際は,編集に関する方針に従ってください.[]

概要[]

引数[]

実装[]

 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 }


リンク元

Advertisement