2016-07-14 6 views
1

Я заметил, что, глядя на фрагменты кода примера (например, ниже), большинство используют исключительно многострочные/* */комментарии, а не отдельные строки // комментарии. Почему это?Почему многие примеры используют только многострочные комментарии в c/C++?

http://www.freertos.org/RTOS_Task_Notification_As_Event_Group.html

Я всегда находил это немного раздражает, потому что это мешает мне закомментировав блоки кода, если это необходимо, IE, когда вы копируете биты кода в новый проект и не но обновил все соответствующие функции для компиляции в новом проекте.

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

+1

Это просто легче сказать многомиллионные комментарии. Использование // vs/* */- это просто выбор стиля без правильной техники. –

+3

Долгое время '/ * * /' был единственным видом, доступным для переносимого C. Таким образом, программист старого времени C с большей вероятностью выбирает эту форму , Обратите внимание, что в вашем примере '& ulNotifiedValue' является аргументом out для стиля C. –

+0

Не знаете, почему вы отметили C++? FreeRTOS написан на C. –

ответ

5

Вы используете учебник FreeRTOS в качестве примера C++. Если вы посмотрите на sources FreeRTOS, вы обнаружите, что на самом деле это написано на C, а не на C++.

C++ style single single line комментарии (//) не было в C до тех пор, пока они не были представлены на C99. Перед кодом C99 было написано много кода, включая учебники. Даже новый код C может быть написан без использования новых функций языка, чтобы поддерживать совместимость программы со старыми компиляторами, которые не поддерживают новую спецификацию, или просто из-за старой привычки или предпочтения.

Я всегда находил это немного раздражает, потому что это мешает мне закомментировав блоки кода при необходимости

Используйте это, чтобы временно отключить блок кода:

#if 0 
/* Bits in this RTOS task's notification value are set by the notifying 
    tasks and interrupts to indicate which events have occurred. */ 
    xTaskNotifyWait(0x00,  /* Don't clear any notification bits on entry. */ 
        ULONG_MAX, /* Reset the notification value to 0 on exit. */ 
        &ulNotifiedValue, /* Notified value pass out in 
              ulNotifiedValue. */ 
        portMAX_DELAY); /* Block indefinitely. */ 
#endif 
0

Обычно это касается стандартов кодирования. Стандарты - это соглашение о записи (среди группы/компьютерного языка/компании), предназначенное для того, чтобы сделать код более читаемым и сделать его похожим на то, что один кодер написал все (цель стандартов). Не все компании имеют одинаковый набор стандартов , но freertos использовать/* */(и Google, например, использовать //).

И это главная причина, по которой вы указали нам свой код/​​* * /, так как компания согласилась написать свой код.

+0

_ «чтобы все показалось, что один кодер написал все (цель стандартов.)» _ Нет, стандарты кодирования сознательно признают, что код написан несколькими/многими людьми; цель состоит в том, чтобы все они могли понять код друг друга, используя общий «язык». –

+0

Этот ответ пуст в любом случае; он только перемещает стойки ворот в «хорошо, хорошо, _why_ является ли это стандартом кодирования компании?» –

+0

Вы не можете задавать _why_ соглашениям, потому что конвенция - это то, что кто-то решил. И основная цель стандарта кодирования состоит в том, чтобы заставить его казаться, что его написал один кодер, что повышает ремонтопригодность и снижает сложность. Если код выглядит так, как будто он написан от нескольких человек, тогда код, вероятно, будет массирован без каких-либо стандартов. –

0

Как однострочные комментарии //, так и многострочные комментарии /* */ действительны C++. Почему кто-то использует один над другим, это просто вопрос вкуса и личных предпочтений.

Не мешает вам комментировать блоки кода, если у вас есть достойный текстовый редактор - например, в Emacs, отметьте блок для комментариев, затем сделайте M-x comment-region - или аналогичный в других редакторах/IDE, и они будут делать правильные вещь. Если не; получите лучший редактор/конфигурацию для вашего текущего редактора.

0

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

0

Скорее всего, код, на который вы смотрите, или первоначально был написан в C. Помимо этого, кодирование - это просто выбор стиля, возможно, это был стиль, выбранный лидерами этого проекта.Есть 2 способа обойти это:

#if 0

#if 0 
    some code we hate 
#endif 

ИЛИ

Если вы используете IDE, то, скорее всего, они имеют возможность закомментируйте блок кода:

enter image description here

что приводит к следующим образом:

// stuff; 
// stuff; 
// stuff;