Небольшая программа на C++ может быть (и часто состоит) из одной единицы перевода. например несколько тысяч строк кода C++. В этом случае у вас может быть один исходный файл myprog.cc
C++ (с несколькими #include
внутри).
Но когда вы работаете над более крупной программой в команде, удобно иметь несколько исходных файлов C++.
Некоторые файлы C++ генерируются другой программой (это называется метапрограммированием или компиляция из исходного кода) и может иметь миллион строк строк C++. ANTLR или GNU Bison или TypeScript2Cxx способны генерировать код C++.
Но если вы работаете в команде таких людей, как Алиса и Боб, удобно решить, что Алиса отвечает за alice.cc
, а Боб пишет bob.cc
, и оба совместно работают над общим заголовочным файлом header.hh
, который #include
-d как в alice.cc
, так и в bob.cc
. . Этот header.hh
фактически определяет API программного проекта.
Узнайте больше о системах контроля версий (я предпочитаю git) и автоматизация сборки инструменты (например, ninja или make).
Ищите вдохновение в коде C++ существующих проектов с открытым исходным кодом на gitlab или github или в другом месте (в в частности, внутри исходного кода Clang и GCC, оба являются основными компиляторами C++).
FWIW, в GCC 10.1 (от мая 2020 г.) gcc/go/gofrontend/expressions.cc
написан от руки и содержит 19711 строк кода C++, то есть почти двадцать тысяч строк. Они составляются ежедневно. Я знаю людей, которые над этим работают, они замечательные и приятные профессионалы. Самый большой файл FTLK 1.4 — это src/Fl_Text_Display.cxx
с 4175 строками C++.
По личному опыту, у вас может быть одна функция C++ из нескольких десятков тысяч строк C++ (это имеет практический смысл только тогда, когда этот код C++ сгенерирован), но тогда время компиляции на оптимизирующий компилятор является сдерживающим фактором. Вы можете адаптировать мою программу manydl.c для создания файлов C++. (в настоящее время он генерирует случайные файлы C с функциями настраиваемого размера) произвольного размера. Но код C++, сгенерированный Fluid или Qt Designer может быть довольно большим, а код C++, сгенерированный для GUI часто состоит из длинных, но концептуально простых функций.
Ничего в стандарте C++11 (см. n3337) требует нескольких единиц перевода. У вас может быть (для примера см. sqlite) один файл C++ foo.cc
из миллиона строк. И вы можете сгенерировать часть исходного кода C++. Проект Qt, проект GCC. В книге Жака Питра Искусственные существа: совесть сознательной машины ISBN 978-1848211018 на многих страницах объясняется, почему такой подход стоит того.
person
Basile Starynkevitch
schedule
06.06.2020
gcc/go/gofrontend/expressions.cc
содержит 19711 строк в GCC 10.1, и они пишутся от руки и ежедневно компилируются. - person Basile Starynkevitch   schedule 06.06.2020