利用define對結構體成員賦值


可以使用宏定義方式對結構體成員進行賦值。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct{
    struct {
        int n1;
        int n2;
    } data;
    int n3;
}n_t;

#define  struct_set(_data, _field, _val) \
    do { \
        (_data)->_field = _val; \
    } while (0)                  

int main(int argc, char *argv[])
{
    int num = 0;

    n_t a;
    // 使用宏struct_set對結構體變量a的成員n3賦值
    struct_set(&a, n3, 3);
    
    printf("%d\n", a.n3);
    
    return 0;
}   

將代碼進行預處理展開可以看到相應的宏被改為直接對結構體進行操作。

展開后的部分代碼

typedef struct{
    struct {
        int n1;
        int n2;
    } data;
    int n3;
}n_t;

int main(int argc, char *argv[])
{
    int num = 0;

    n_t a;

    do { (&a)->n3 = 3; } while (0);

    printf("%d\n", a.n3);

    return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM