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);

  • 相关阅读:
    EELS
    企业管理软件随想透视>包容,无形思想>有形方便
    定风波
    企业管理软件随想也谈企业框架软件需求
    Delphi数据库开发-前言
    游戏引发的……
    js 当前时间
    代码片段
    阶段总结
    Web界面设计
  • 原文地址:https://www.cnblogs.com/aspirs/p/7117072.html
Copyright © 2011-2022 走看看