Разрешить printf через флаги DEBUG

0

Я хочу, чтобы выполнить "кучу кода", если я скомпилировал исходный файл с -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 если размер матрицы мал, если нет, тогда я напечатаю время выполнения (для больших матриц).

Проблема заключается в следующем: если я скомпилирую его с флагом -g или без -g, он никогда не печатает информацию о матрице или векторе.

  • 1
    добавить опцию -DDEBUG .
  • 1
    Вы пытались скомпилировать с -g -DDEBUG=1 ?
Показать ещё 5 комментариев
Теги:
debugging
macros

1 ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню