如果我使用-g
标志(g ++编译器)编译源文件,我想执行“一堆代码”,我在考虑这样的事情:
int main()
{
// do some calculations...
#if DEBUG
fputs("MATRIX:\n", stdout);
Print_Matrix(A, M, N);
fputs("VECTOR:\n", stdout);
Print_Vector(x, N);
fputs("PARALLEL RESULT\n", stdout);
Print_Vector(y, M);
fputs("SERIAL RESULT\n", stdout);
Print_Vector(y_serial, M);
#else
fprintf(stdout, "SIZE: %d x %d AND %d THREADS\n", M, N, NUM_OF_THREADS);
fprintf(stdout, "TIEMPO CONC.:%d mseg\n", (int)final_par);
fprintf(stdout, "TIEMPO SERIAL:%d mseg\n", (int)final_serial);
#endif
}
目的是当矩阵的大小很小时我将以DEBUG
模式运行,如果没有,那么我将打印执行时间(对于更大的矩阵)。 < / p>
问题是:如果我使用或不使用-g
标志进行编译,它就不会打印有关矩阵或向量的信息。
答案 0 :(得分:2)
如果您使用DEBUG
作为标记进行编译,那么即使不是printf()
,您也会执行fprintf()
。
请注意,-g
不是这里要关注的那个,因为它只会生成调试信息,我们稍后可以利用调试器来利用它。
检查这个简单的例子。
px.c
#include <stdio.h>
int main(void)
{
#if DEBUG
printf("Somewhere DEBUG was feeded to this program\n");
#else
printf("Somewhere DEBUG was NOT feeded to this program\n");
#endif
return 0;
}
执行:
samaras@samaras-A15:~$ gcc -Wall px.c -o myexe
samaras@samaras-A15:~$ ./myexe
Somewhere DEBUG was NOT feeded to this program
samaras@samaras-A15:~$ gcc -Wall -DDEBUG px.c -o myexe
samaras@samaras-A15:~$ ./myexe
Somewhere DEBUG was feeded to this program