linux下的struct運用

2021-10-21 02:38:31 字數 2925 閱讀 1429

一. struct 與 typedef struct的區別

typedef是c語言的關鍵字,作用在於為一種資料定義乙個新名字。資料型別包括內部資料型別(int,char等)和自定義的資料型別(struct型別等)。使結構體使用更加方便。

1.typedef定義時,宣告變數可直接用 goio_stu stu1;(gpio_stu為gpio的別名)

typedef struct gpio

gpio_stu;

2.沒有使用typedef定義時,宣告變數就需要用stuct gpio gpiuo_stu ;(這裡的gpio_stu是變數名)

struct gpio

gpio_stu;

二.在執行過程中動態分配記憶體 一定要使用對應的標頭檔案#include

typedef struct gpio_stu

gpio_stu;

struct gpio_stu * gpio = null ;

gpio = (gpio_stu *) malloc(sizeof(gpio_stu) * (2 + maxsize)) ; // (2 + maxsize))是需要struct空間的個數

例:#include

#include

#include

#include

#include

#include

int maxsize ;//測多少個gpio

time_t start , end ;

/*******stuct 存資料

/typedef struct gpio_stu

gpio_stu;

struct gpio_stu * gpio = null ;

/***********************************讀檔案 ************************************/

void read_buff(char *fopen_gpio_txt)

for (i = 0 ;i}

/錯誤值對應輸出

*************/

void compare_write(file * fp , int pins , int error ,int test)

else if(error == (-1))

else if(error == (-2))

else if(error == (-3))

else if(error == (-4))

else if(error == (-5))

else if(error == (-6))

else if(error == (-7))

else if(error == (-8))

else if(error == (-9))

else if(error == (-10))

else if(error == (-11))

else if(error == (-12))

else if(error == (-13))

else if(error == (-14))

else

if (test == 0)

else if(test == 1)

return ;

}

/開始測試

************/

//int test_buff(char *fopen_result_txt)

void test_buff(file * fp)

else if(modes == 2)

else if(modes == 3)

else if(modes == 4)

else if(modes == 5)

else if(modes == 6)

init[i-2] = gpioinit(pins , mode , 1); //平台gpio初始化

set[i-2] = gpioset(pins , values); //設定輸出模式的gpio埠高/低電平

val[i-2] = gpioget(pins); //獲取輸入模式的gpio埠高/低電平值

printf (「init = %d , set = %d , val = %d」, init[i-2] , set[i-2] , val[i-2]) ;

if((values != val[i-2]) || (init[i-2] != 0) || (set[i-2] != 0) )

}return;}

/normal 模式

*******************/

void measure_mode_times(file * fp)

return 0 ;

}/special 模式

*************/

void measure_mode_timing(file * fp) }

return 0 ;

}/main 函式

**************/

int main(int argc, char *ar**)

printf("--------------------------\n");

fopen_gpio_txt = ar**[1];

printf("--------------------------\n");

read_buff(fopen_gpio_txt);

printf("--------------------------\n");

if(gpio[1].time !=0)

else

fclose(fp) ; //關閉檔案

return 0;

linux系統下struct大小的計算總結

fire今天剛學了結構體,聽的不是很明白,回來之後找了很多資料,然後自己親手證明,總結了結構體大小計算的幾個結論,如果有問題希望大家給予指點 linux系統 pragma pack 預設為4結構體對齊模數是結構體內部最大資料成員長度和pragma pack中的較小者 例如 char a 4 shor...

linux下redis的安裝與運用

redis是當前比較熱門的nosql系統之一,它是乙個key value儲存系統。和memcache類似,但很大程度補償了memcache的不足,它支援儲存的value型別相對更多,包括string list set zset和hash。這些資料型別都支援push pop add remove及取交...

linux下運用opensll製作ssl證書

證書製作步驟 第一步 生成server.key,輸入4位數的密碼 被強制要求 openssl genrsa des3 out server.key 2048第二步 生成不帶密碼的server.key openssl rsa in server.key out server.key第三步 生成serv...