Typedef结构的成员在c中是否为静态
Typedef structure's member being static or not in c
我觉得这个none意义不是吗?因为在从该变量创建实例之后。它将初始化整个变量,不会对成员有不同的行为并将初始化所有成员,不是吗?据我所知,静态变量是全局变量,但它们的使用仅限于指定的函数或源文件。
typedef struct
{
const uint32_t mainpointer;
static uint32_t currentpointer;
uint16_t num_el;
uint8_t num_byte;
}arrayPushCirc_doublebuffer_instance;
void main(void)
{
arrayPushCirc_doublebuffer_instance struction;
function1(struction);
}
在 C 中,结构的数据成员可能没有存储 class 说明符。
所以这个数据成员的声明
static uint32_t currentpointer;
在 C 中无效。
根据 C 语法数据成员声明可能只有以下说明符
specifier-qualifier-list:
type-specifier specifier-qualifier-listopt
type-qualifier specifier-qualifier-listopt
另一方面,您可以使用存储 class 说明符 static 来声明文件范围或函数范围内的对象。
例如
#include <stdint.h>
typedef struct
{
const uint32_t mainpointer;
uint32_t currentpointer;
uint16_t num_el;
uint8_t num_byte;
}arrayPushCirc_doublebuffer_instance;
static arrayPushCirc_doublebuffer_instance struction;
int main( void )
{
//...
}
注意根据C标准,不带参数的函数main应该声明为
int main( void )
我觉得这个none意义不是吗?因为在从该变量创建实例之后。它将初始化整个变量,不会对成员有不同的行为并将初始化所有成员,不是吗?据我所知,静态变量是全局变量,但它们的使用仅限于指定的函数或源文件。
typedef struct
{
const uint32_t mainpointer;
static uint32_t currentpointer;
uint16_t num_el;
uint8_t num_byte;
}arrayPushCirc_doublebuffer_instance;
void main(void)
{
arrayPushCirc_doublebuffer_instance struction;
function1(struction);
}
在 C 中,结构的数据成员可能没有存储 class 说明符。
所以这个数据成员的声明
static uint32_t currentpointer;
在 C 中无效。
根据 C 语法数据成员声明可能只有以下说明符
specifier-qualifier-list:
type-specifier specifier-qualifier-listopt
type-qualifier specifier-qualifier-listopt
另一方面,您可以使用存储 class 说明符 static 来声明文件范围或函数范围内的对象。
例如
#include <stdint.h>
typedef struct
{
const uint32_t mainpointer;
uint32_t currentpointer;
uint16_t num_el;
uint8_t num_byte;
}arrayPushCirc_doublebuffer_instance;
static arrayPushCirc_doublebuffer_instance struction;
int main( void )
{
//...
}
注意根据C标准,不带参数的函数main应该声明为
int main( void )