Как выполнить пошаговый просмотр операторов #define с помощью gdb - PullRequest
2 голосов
/ 18 октября 2011

Я использую компилятор gcc.Я работаю над кодом, который часто включает в себя написание блоков операторов внутри одной директивы #define.Например, следующее:

#include<stdio.h>    
#define DO_RR(x) do { \
for(i=0;i<x; i++) \
    printf("%d", i); \
}while(0);

int main() {
  int i=0;
  DO_RR(5)
  return 0;
}

Теперь я хочу иметь возможность пошагово выполнять инструкции в DO_RR.Однако, когда я пытаюсь это сделать, элемент управления переходит непосредственно из оператора DO_RR в main в следующий оператор и не выполняет ни одного шага.Есть ли какой-нибудь способ достичь перехода в блоки препроцессора?

Ответы [ 2 ]

3 голосов
/ 18 октября 2011

Вы не можете, #defines расширяются препроцессором и отсутствуют в коде.

1 голос
/ 18 октября 2011

Чтобы дополнить ответ @ Angelom, вы можете обойти это с помощью функций.Переместите любой код из #define в функцию, и вы сможете выполнить вызов функции.

В идеале и чаще всего вы можете заменить весь #define встроенной функцией..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...