zoukankan      html  css  js  c++  java
  • notices for complex macro definition in C

    notices for complex macro definition in C

    1. space is prohibitted after the backslash() 

    otherwise the below build error will be prompted:

    backslash and newline separated by space

    2. be noticed to -> of structure pointer in macro definition and & in macro reference

    #define CUSTOM_PRINT(pt_examp_struct)      
    do                       
    {                        
    printf("age: %d ", pt_examp_struct->ui1_age);      
    printf("name: %d ", pt_examp_struct->ac_name);      
    } while(0)

    reference:
    T_EXAMP_STRUCT t_examp_struct = {26, "hello world!"}
    CUSTOM_PRINT(&t_examp_struct);

    build error will be prompted when compiling.
    reason: expanding the macro:
    printf("age: %d ", &t_examp_struct->ui1_age);

    t_examp_struct is a structure. -> operator has the higher priority than &. t_examp_struct->ui1_age is wrong.

    correct it:
    #define CUSTOM_PRINT(pt_examp_struct)         
    do                              
    {                              
    T_EXAMP_STRUCT *pt_examp_struct = &t_examp_struct;    
    printf("age: %d ", pt_examp_struct->ui1_age);        
    printf("name: %d ", pt_examp_struct->ac_name);        
    } while(0)

    reference:
    CUSTOM_PRINT(t_examp_struct);

  • 相关阅读:
    外观模式
    适配器模式
    桥接模式
    中文词频统计
    英文词频统计
    字符串练习
    Python基础
    熟悉常用的Linux操作
    作业
    递归下降分析法
  • 原文地址:https://www.cnblogs.com/aspirs/p/7117072.html
Copyright © 2011-2022 走看看