Description
The typedef storage-class specifier is supported.
The extern and static storage-class specifiers are supported but
require support for OpenCL C 1.2 or newer.
The auto and register storage-class specifiers are not supported.
The extern storage-class specifier can only be used for functions (kernel
and non-kernel functions) and global variables declared in program scope
or variables declared inside a function (kernel and non-kernel functions).
The static storage-class specifier can only be used for non-kernel
functions, global variables declared in program scope and variables inside
a function declared in the global or constant address space.
Examples:
extern constant float4 noise_table[256];
static constant float4 color_table[256];
extern kernel void my_foo(image2d_t img);
extern void my_bar(global float *a);
kernel void my_func(image2d_t img, global float *a)
{
extern constant float4 a;
static constant float4 b = (float4)(1.0f); // OK.
static float c; // Error: No implicit address space
global int hurl; // Error: Must be static
...
my_foo(img);
...
my_bar(a);
...
while (1)
{
static global int inside; // OK.
...
}
...
}
Document Notes
For more information, see the OpenCL C Specification
This page is extracted from the OpenCL C Specification. Fixes and changes should be made to the Specification, not directly.