| <!-- common example(s) for global, local, constant, and private --> |
| |
| <para> |
| There is no generic address space name for program scope variables. All program scope |
| variables must be declared in the <function>__constant</function> address space. For example: |
| </para> |
| |
| <informaltable frame="none"> |
| <tgroup cols="1" align="left" colsep="0" rowsep="0"> |
| <colspec colname="col1" colnum="1" /> |
| <tbody> |
| <row> |
| <entry> |
| // declares a pointer p in the __private address space that |
| // points to an int object in address space __global |
| __global int *p; |
| |
| // declares an array of 4 floats in the __private address space. |
| float x[4]; |
| </entry> |
| </row> |
| </tbody> |
| </tgroup> |
| </informaltable> |
| |
| <para> |
| There is no address space for function return values. Using an address space qualifier in |
| a function return type declaration will generate a compilation error, unless the return |
| type is declared as a pointer type and the qualifier is used on the points-to address space. |
| </para> |
| |
| <para> |
| For example: |
| </para> |
| |
| <informaltable frame="none"> |
| <tgroup cols="1" align="left" colsep="0" rowsep="0"> |
| <colspec colname="col1" colnum="1" /> |
| <tbody> |
| <row> |
| <entry> |
| __private int f() { ... } // should generate an error |
| __local int *f() { ... } // allowed |
| __local int * __private f() { ... }; // should generate an error. |
| </entry> |
| </row> |
| </tbody> |
| </tgroup> |
| </informaltable> |
| |
| <!-- 14-Oct-2011 --> |
| |