Количество переводческих единиц против количества файлов cpp - PullRequest
0 голосов
/ 02 мая 2019

У нас есть 2 случая (сценарии).В каждом случае у нас есть 2 файла: main.cpp и file.cpp

Дело 1

  • main.cpp:
#include <iostream>

#include "file.cpp"  // this line is what matters

int main () {...}

Я компилирую и запускаю, выполнив:

g++ main.cpp -o main && ./main

Дело 2

  • main.cpp:
#include <iostream>

void filefunc(int); // function declaration from file.cpp

int main () {...}

Я компилирую и запускаю, выполняя:

g++ -c main.cpp
g++ -c file.cpp
g++ main.o file.o -o main && ./main

Сколько translation units у нас в каждом случае?это:

  • один для первого
  • два для второго

1 Ответ

2 голосов
/ 02 мая 2019

Каждый раз, когда вы передаете файл исходного кода g++, то есть единице перевода. По определению.

Расширение файла практически не имеет значения, но обычно мы резервируем ".cpp" для вещей, которые мы передаем компилятору, а не для вещей, которые мы #include.

В первом случае ваше необоснованное включение файла .cpp приводит к созданию единицы перевода single , которая может запутать ваших коллег-программистов и вызвать отклонение при просмотре кода.

Во втором случае у вас есть две единицы перевода.

На этот раз конечный результат & mdash; исполняемый файл & mdash; то же самое.

...