Почему вставка URL-адресов в код C и С++ работает?

Почему выполняется компиляция следующего кода? Какой раздел языка позволяет добавлять URL-адреса в код C и С++?

int main()
{
     http://www.stackoverflow.com
     return 0;
}

Спасибо, Кастро.

Ответ 1

Если вы скомпилированы с предупреждениями, вы заметите:

warning: label ‘http’ defined but not used

Это должно быть достаточно показательно для проблемы.

Текст http: обрабатывается как метка.

Далее // отрицает оставшийся текст как комментарий, игнорируя его.

http://www.stackoverflow.com

Даже схемы цвета синтаксиса SO, указанные выше, показывают, что это правда, поскольку раздел после http обрабатывается как комментарий (выделено серым цветом).

Ответ 2

Это потому, что компилятор рассматривает http: как метку и // whatever как комментарий. Это совершенно законный код.

Если вы не используете goto http; где-то, это будет совершенно бесполезный код.

Ответ 3

В вашем коде http есть только метка, а //www.stackoverflow.com - комментарий.

Также обратите внимание, что

int main()
{
     http://www.stackoverflow.com
}

или

int main()
{
 http://www.stackoverflow.com
 http://www.facebook.com
 return 0;
}

не будет компилироваться.