В C должен ли быть пробел между именем функции и скобками?

#c

#c

Вопрос:

В приведенном ниже коде:

 int main () {cout << "hello world";}
  

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

Комментарии:

1. Afaik, единого соглашения не существует. Я определенно видел оба.

2. @Dr.Person: Эм {} это «фигурные скобки». «Скобки» — общепринятый синоним круглых скобок.

3. @Lightness Races in Orbit Вы правы, но разве «скобки» не являются более точными и недвусмысленными, как формулировка текущего вопроса? PS Я понятия не имею, нужно ли использовать @ feature с вашим именем пользователя, в котором есть пробелы.

4. @Dr.PersonPersonII: Вы могли бы использовать функцию автозаполнения, которая появляется при вводе @ , либо для выполнения уведомления, либо, по крайней мере, для отображения формата, который вы должны ввести. Как это бывает, «@Lightness» достаточно. И отсутствие круглых скобок на самом деле не является «более однозначным», потому что это технически относится ко всей () группе, но часто используется для обозначения отдельных символов.

5. @Lightness Когда говорится «скобки», это может означать круглые или фигурные скобки. Теперь мы с этим согласны. Но спрашивающий вообще не спрашивает о фигурных скобках. Почему бы не устранить несколько секунд путаницы, изменив вопрос, чтобы избежать этого?

Ответ №1:

Компилятору все равно, но общепринятым соглашением является не использовать пробел.

Ответ №2:

Насколько я могу судить, пробелы требуются только для уточнения, где символы отделены друг от друга, где символы представляют собой последовательности букв, цифр и подчеркиваний. Смутно говоря, все команды препроцессора должны заканчиваться новой строкой.

 #include<iostream>
int main(){char a=4 3;std::cout<<a<<std::endl;return 0;}
   ^           ^                                    ^
  

В этом примере у меня есть пробел между int и main , потому что в противном случае компилятор подумал бы, что это функция без имени возвращаемого типа intmain . То же самое с char a двумя символами (не переменная с именем chara , а return 0 также два символа, а не какое-либо выражение return0 .

Ответ №3:

Пробел в вашем примере не имеет значения.

Ответ №4:

Это зависит от стандарта кодирования. Если его нет, то на человеке, пишущем код.

Комментарии:

1. стандарт кодирования, например, стиль GNU C поощряет вызовы функций для поиска like_this (and, that); среди других (иногда уникальных) предпочтений. и не избивайте их, но, честно говоря, если вы попробуете написать немного кода GLib / GTK , подобные наглядные пособия начинают казаться необходимыми 😉

Ответ №5:

При перегрузке операторов это, как правило, немного повышает удобочитаемость, но в большинстве случаев это излишне.