Могу ли я включить файл cpp в main при наличии hpp?

#c #include #main

#c #включить #program-entry-point

Вопрос:

Например: у меня есть класс с именем A. И есть:

 A.hpp
A.cpp
main.cpp
  

для моего проекта

По умолчанию мне нужно включить только A.hpp в main, чтобы я мог скомпилировать его либо с помощью IDE, такой как Xcode, либо с помощью:

 g   main.cpp A.cpp -o xxxxx
  

Но система отправки позволяет мне использовать только:

 g   main.cpp -o xxxx
  

Я попытался включить A.cpp в основном, но IDE говорит: основной файл не может быть включен рекурсивно при создании преамбулы

Есть ли какое-либо решение? Я хочу сохранить свои hpp и cpp отдельно.

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

1. Никогда не следует включать файл cpp.

2. что такое «система отправки»? возможно, это то, что нужно исправить

3. Система подачи заявок — это школьная веб-система подачи заявок, я отправляю свою работу и получаю автоматическую оценку. Система скомпилирует мой код с использованием g main.cpp -o xxxx

4. Очевидно, что система отправки (что бы это ни было) не может обрабатывать более одного файла .cpp, поэтому вам следует просто поместить весь ваш код в один файл .cpp. Это можно сделать без проблем. В противном случае спросите своего учителя / репетитора.

5. ^ это был бы мой переход. Просто скопируйте файл.h в начало main.cpp и вставить a.cpp после кода main.

Ответ №1:

Могу ли я включить файл cpp

Теоретически, любой файл может быть включен.

Но в качестве соглашения вы никогда не должны включать файлы cpp.

Но система отправки позволяет мне использовать только:

 g   main.cpp -o xxxx
  

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

Ответ №2:

Вы можете #include использовать любой файл, который вы хотите. #include выполняется автоматическое копирование-вставка. Он просматривает файл, который вы указали ему включить, и читает все, что есть в файле, и делает вид, что вы написали это в своем исходном файле. Ему все равно, что в файле, он просто делает это. Вы можете включить .h файл, .hpp подшивку, .cpp .txt файл, .py .jpg файл, а также все, что вы хотите, при условии, что в нем есть действительный код C .

Обратите внимание, что включение .cpp файла не то же самое, что его компиляция отдельно. И люди ожидают, что .cpp файлы компилируются отдельно, не включаются. Чтобы не вводить в заблуждение других программистов или будущую версию себя, вам следует переименовать файл во что-то другое, если вы хотите его включить. Вам не обязательно, но вы должны. Если это также не обычный файл заголовка (потому что вы не можете включить его более одного раза), тогда вы можете создать какое-нибудь совершенно другое расширение, например .inc .