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

  • 相关阅读:
    ruby 中的respond_to (转)
    outlook最小化到托盘的设置方法
    FCKeditor 在VS2008下的用法
    暴风影音2009开机启动关闭方法
    构建自己的不可替代性
    MySQL安装1045错解决办法(绝对经典)
    如何学好C++,用好类库很重要
    转:什么是重构
    转:C++堆与栈的区别
    SQL Server 中的索引
  • 原文地址:https://www.cnblogs.com/aspirs/p/7117072.html
Copyright © 2011-2022 走看看