Комментирование комментариев - PullRequest
2 голосов
/ 12 ноября 2008

Я заметил, используя Visual Studio 2003, что я могу «закомментировать» свои комментарии, чтобы они больше не были комментариями. Вот этот пример:

Если у меня есть:

/*
int commented_out = 0;
*/

Я могу закомментировать / * и * / с помощью // и код внутри / * и * / больше не «закомментирован» (текст меняется на цвет без комментариев и компилятор обрабатывает это как код еще раз). Вот так:

///*
int commented_out = 0;
//*/

Я обнаружил, что это верно для msvc 2003, это нормальное поведение C ++ или просто случайность, которая работает с этим компилятором?

Ответы [ 3 ]

19 голосов
/ 12 ноября 2008

Да, это совершенно нормальное поведение. Стандарт C ++ говорит, что /* является началом блока комментария, только если он сам не закомментирован. Я часто использую то, что вы написали выше, чтобы комментировать или раскомментировать блок кода, добавляя / удаляя один символ. Хорошая маленькая хитрость для переключения между двумя блоками кода, один из которых всегда закомментирован:

//*
code block 1 (uncommented)
/*/
code block 2 (commented)
//*/

Теперь удалите одну косую черту с самого начала, и она станет

/*
code block 1 (commented)
/*/
code block 2 (uncommented)
//*/

Не то, чтобы использовать в рабочем коде, но очень полезно для быстрой отладки изменений.

10 голосов
/ 12 ноября 2008

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

Я склонен использовать #if 0 для такого рода вещей и изменить его на #if 1, чтобы раскомментировать, как показано здесь:

#if 0
    int commented_out = 0;
#endif

Тогда мне вообще не нужно беспокоиться о маркерах комментариев.

1 голос
/ 31 марта 2009

На самом деле это работает практически на любом языке с комментариями блока в стиле C.

/*
int foo = 0;
/*/
int foo = 1;
//*/

или даже комментарии XML

<!--->
a
<!-->
b
<!---->

к сожалению я рисую пробел в комментариях к световому мечу Луи

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