方法一:在写程序时,控制是否输出调试信息:
示例程序:
#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