Вложенные комментарии в C++

Это должна быть общая проблема и, возможно, похожая на какой-то вопрос здесь, но я ищу лучший способ прокомментировать несколько строк (а не методы ) в C++, которые имеют комментарии в них .Я проверил некоторые сообщения на SO, но не смог получить полное подробнее об использовании чего-то вроде if #0 .

Я проверил этот пост вложенные комментарии в Visual C++? но я не на платформе Windows.

4 ответов


вы почти правы; по существу, предлагается "if-def" раздел кода. То, что вы хотите сделать, это использовать директиву precompiler #if чтобы заблокировать код для вас. Пример ниже показывает, что я хочу игнорировать все между if и endif.

#if 0
/* Giant comment
 it doesn't matter what I put here */

// it will be ignored forever.
#endif

чтобы ответить на ваш вопрос в целом, хотя; нет способа иметь сложные комментарии, т. е.

/* 
  /* */ <--- this closes the first /* 
*/ <--- this dangles.

использовать любые средства, ваши редакторе можно добавить // a начало всех строк.

например, в Vim вы можете пометить строки как визуальный блок, а затем вставить в начале всех строк с I//. В Visual Studio вы можете использовать CTRL-K-C ярлык для комментирования блоков кода.


другой маршрут, предполагающий, что вы используете Visual Studio, есть удобная комбинация клавиш для комментария всего выбранного кода, добавив // перед каждой строкой. CTRL+K+CTRL+C комментировать и CTRL+K+CTRL+U раскомментировать.


текст между #if 0 и #endif будет проигнорирован компилятором. (Ваш препроцессор может фактически удалить его, прежде чем" компилятор " сможет даже взглянуть на него!)

#if 0

    /* 42 is the answer. */

    Have you tried jQuery?

    @Compiler Stop ignoring me!!

#endif

у вас будет лучший контроль, если вы используете #ifdefs:

// #define DEBUG


#ifdef DEBUG
   MyFunction();
   std::cout << "DEBUG is defined!";
#endif


// Later in your code...

#ifdef DEBUG
    std::cout << "DEBUG is still defined!";
#endif

просто раскомментируйте первую строку, и ваш #ifdef DEBUG код внезапно будет виден компилятору.


P. S. Это должна очистить более какой-либо путаницы:

/*
    cout << "a";
    /*
        cout << "b";
    */
    cout << "c";
*/

в выход должен быть "c", предполагая, что ваш компилятор не дает вам никаких ошибок для последнего */.