C语言使用技巧

【return error信息】

  [02/28/2022]:今天看code注意到一种返回result的方法。

  if(*** !=0)

    result = -__LINE__;

  goto faliture;

 

  faliture:

    printf("test fail(%d)\n", result);

这种写法的好处是可以很快知道报错的code位置。

 

【预编译】

#define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏( defined macro) 。下面是宏的声明方式:

#define name(parameter-list) stuff

其中, parameter-list (参数列表)是二个由逗号分隔的符号列表,它们可能出现在stuff 中。数列表的左括号必须与name 紧邻。如果两者之间有任何空白存在,参数列表就会被解释为stuff 的一部分。

有两种方法可以实现将参数插入到字符串常量中。

  1. 利用相邻字符串常量自动合并的特点,插入到字符串中。

    #define PRINT(FORMAT ,VALUE)  \

    printf( "The value is " FORMAT "\n", VALUE )

    • •
    PRINT ( "%d" , x+3);
这种技巧只有当字符串常量作为宏参数给出时才能使用。

   2. 利用#argument来实现,它会把argument翻译成"argument"

    #define PRINT(FORMAT,VALUE)  \

    printf("The value of "#VALUE" is FORMAT\n", VALUE)

PRINT ( "%d" , x + 3 );
它将产生下面的输出:
The value of x + 3 is 25

【编译时打印宏定义的值】

  #define   PRINT_MACRO_HELPER(x)   #x 
  #define   PRINT_MACRO(x)   #x"="PRINT_MACRO_HELPER(x) 

  #define TEST  16 

  #pragma message(PRINT_MACRO(TEST));

 #pragma是最复杂的预处理指令,它的作用是指定编译器的状态或者指示编译器完成一些特点动作。

一般格式为#pragma para, para为参数。

 

posted @ 2022-02-28 15:07  老胡同学  阅读(218)  评论(0)    收藏  举报