6.10. Storage-Class Specifiers

6.10. 存储类规范

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.

​支持typedef存储类说明符。支持外部和静态存储类说明符,但需要支持OpenCL C 1.2或更高版本。不支持自动和寄存器存储类说明符。

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.

extern存储类说明符只能用于程序作用域中声明的函数(内核和非内核函数)和全局变量或函数内声明的变量(内核和无内核函数)。静态存储类说明符只能用于非内核函数、在程序作用域中声明的全局变量以及在全局或常量地址空间中声明的函数内的变量。

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.
        ...
    }
    ...
}
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐