方法一:在寫程序時,控制是否輸出調試信息:
示例程序:
#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