1<html lang="en"> 2<head> 3<title>C++ Attributes - Using the GNU Compiler Collection (GCC)</title> 4<meta http-equiv="Content-Type" content="text/html"> 5<meta name="description" content="Using the GNU Compiler Collection (GCC)"> 6<meta name="generator" content="makeinfo 4.13"> 7<link title="Top" rel="start" href="index.html#Top"> 8<link rel="up" href="C_002b_002b-Extensions.html#C_002b_002b-Extensions" title="C++ Extensions"> 9<link rel="prev" href="Bound-member-functions.html#Bound-member-functions" title="Bound member functions"> 10<link rel="next" href="Namespace-Association.html#Namespace-Association" title="Namespace Association"> 11<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> 12<!-- 13Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 141998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 152010 Free Software Foundation, Inc. 16 17Permission is granted to copy, distribute and/or modify this document 18under the terms of the GNU Free Documentation License, Version 1.3 or 19any later version published by the Free Software Foundation; with the 20Invariant Sections being ``Funding Free Software'', the Front-Cover 21Texts being (a) (see below), and with the Back-Cover Texts being (b) 22(see below). A copy of the license is included in the section entitled 23``GNU Free Documentation License''. 24 25(a) The FSF's Front-Cover Text is: 26 27 A GNU Manual 28 29(b) The FSF's Back-Cover Text is: 30 31 You have freedom to copy and modify this GNU Manual, like GNU 32 software. Copies published by the Free Software Foundation raise 33 funds for GNU development.--> 34<meta http-equiv="Content-Style-Type" content="text/css"> 35<style type="text/css"><!-- 36 pre.display { font-family:inherit } 37 pre.format { font-family:inherit } 38 pre.smalldisplay { font-family:inherit; font-size:smaller } 39 pre.smallformat { font-family:inherit; font-size:smaller } 40 pre.smallexample { font-size:smaller } 41 pre.smalllisp { font-size:smaller } 42 span.sc { font-variant:small-caps } 43 span.roman { font-family:serif; font-weight:normal; } 44 span.sansserif { font-family:sans-serif; font-weight:normal; } 45--></style> 46<link rel="stylesheet" type="text/css" href="../cs.css"> 47</head> 48<body> 49<div class="node"> 50<a name="C++-Attributes"></a> 51<a name="C_002b_002b-Attributes"></a> 52<p> 53Next: <a rel="next" accesskey="n" href="Namespace-Association.html#Namespace-Association">Namespace Association</a>, 54Previous: <a rel="previous" accesskey="p" href="Bound-member-functions.html#Bound-member-functions">Bound member functions</a>, 55Up: <a rel="up" accesskey="u" href="C_002b_002b-Extensions.html#C_002b_002b-Extensions">C++ Extensions</a> 56<hr> 57</div> 58 59<h3 class="section">7.7 C++-Specific Variable, Function, and Type Attributes</h3> 60 61<p>Some attributes only make sense for C++ programs. 62 63 <dl> 64<dt><code>init_priority (</code><var>priority</var><code>)</code><dd><a name="index-g_t_0040code_007binit_005fpriority_007d-attribute-3285"></a> 65 66 <p>In Standard C++, objects defined at namespace scope are guaranteed to be 67initialized in an order in strict accordance with that of their definitions 68<em>in a given translation unit</em>. No guarantee is made for initializations 69across translation units. However, GNU C++ allows users to control the 70order of initialization of objects defined at namespace scope with the 71<code>init_priority</code> attribute by specifying a relative <var>priority</var>, 72a constant integral expression currently bounded between 101 and 65535 73inclusive. Lower numbers indicate a higher priority. 74 75 <p>In the following example, <code>A</code> would normally be created before 76<code>B</code>, but the <code>init_priority</code> attribute has reversed that order: 77 78 <pre class="smallexample"> Some_Class A __attribute__ ((init_priority (2000))); 79 Some_Class B __attribute__ ((init_priority (543))); 80</pre> 81 <p class="noindent">Note that the particular values of <var>priority</var> do not matter; only their 82relative ordering. 83 84 <br><dt><code>java_interface</code><dd><a name="index-g_t_0040code_007bjava_005finterface_007d-attribute-3286"></a> 85This type attribute informs C++ that the class is a Java interface. It may 86only be applied to classes declared within an <code>extern "Java"</code> block. 87Calls to methods declared in this interface will be dispatched using GCJ's 88interface table mechanism, instead of regular virtual table dispatch. 89 90 </dl> 91 92 <p>See also <a href="Namespace-Association.html#Namespace-Association">Namespace Association</a>. 93 94 </body></html> 95 96