用无参数的宏控制输出调试信息【C语言】

方法一:在写程序时,控制是否输出调试信息:

示例程序:

#include <stdio.h>

#define DEBUG//有这句会输出调试信息,如果不需要输出,则注释掉这句

int process (int i, int j, int k){

    return i + j + k;

}

int main (void)

{

    int i, j, k, nread;

    nread = scanf ("%d %d %d", &i, &j, &k);

    #ifdef DEBUG

        fprintf (stderr, "Number of integers read = %i\n", nread);

        fprintf (stderr, "i = %i, j = %i, k = %i\n", i, j, k);

    #endif    printf ("%i\n", process (i, j, k));

    return 0;

}

#define DEBUG的有无决定是否输出调试信息。

有这一句的输出运行信息(键盘输入1 2 3):

1 2 3

Number of integers read = 3

i = 1, j = 2, k = 3

6

无这一句的输出运行信息(键盘输入1 2 3):

1 2 3

6

注释掉一句非常方便,所以,这个办法是方便的。

方法二:编译时决定是不是输出调试信息:

示例程序a.c:

#include <stdio.h>

#include <stdlib.h>

int process (int i1, int i2)

{

 int val;

 #ifdef DEBUG

  fprintf (stderr, "process (%i, %i)\n", i1, i2);

 #endif

 val = i1 * i2;

 #ifdef DEBUG

  fprintf (stderr, "return %i\n", val);

 #endif

 return val;

}

int main (int argc, char *argv[])

{

 int arg1 = 0, arg2 = 0;

 if (argc > 1)

  arg1 = atoi (argv[1]);

 if (argc == 3)

  arg2 = atoi (argv[2]);

 #ifdef DEBUG

  fprintf (stderr, "processed %i arguments\n", argc - 1);

  fprintf (stderr, "arg1 = %i, arg2 = %i\n", arg1, arg2);

 #endif

 printf ("%i\n", process (arg1, arg2));

 return 0;

}

如果要输出调试信息,就象下面这样编译:

gcc -D DEBUG a.c

运行情况(设键盘输入2 5):

a 2 5

processed 2 arguments

arg1 = 2, arg2 = 5

process (2, 5)

return 10

10

如果不输出调试信息,就象下面这样编译:

gcc a.c

运行情况(设键盘输入2 5):

a 2 5

10

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容