2016-09-28 2 views
2

Я создал проект C++, содержащий несколько исходных файлов и заголовочных файлов. Программа компилируется и хорошо работает в кодовых блоках, но я не могу ее скомпилировать в терминале.Программа на С ++ компилируется и запускается в кодовых блоках, но не может ее скомпилировать в терминале

Все файлы находятся в одной папке.

Вот команда Вхожу:

clang++ -std=c++11 main.cpp file1.cpp file1.h 

Он показывает:

clang: warning: treating 'c-header' input as 'c++-header' when in C++ mode, this behavior is deprecated 

И удар ошибок о:

error: use of undeclared identifier 'std' 

В файле головы.

+0

На всякий случай вам интересно, когда вы включаете заголовок где-то, у него есть доступ к тому, что включено исходным файлом, который его включил. Когда вы пытаетесь скомпилировать его, он ведет себя как исходный код и будет ожидать, что эти вещи будут явно включены. –

+0

Long-story-short: не пытайтесь скомпилировать заголовки, как уже было сказано. –

ответ

10

Вы должны избегать компиляции заголовка файла (.h).

Попробуйте с:

clang++ -std=c++11 main.cpp file1.cpp 

Заголовочный файл является то, что препроцессор будет включать в CPP файлы, которые нуждаются в ней (те единицы компиляции которые используют #include директиву препроцессора).

6

Нельзя скомпилировать файлы заголовков, только исходные файлы. В исходных файлах, которые должны ссылаться на файл заголовка, поставьте #include "file1.h" вверху.

Смежные вопросы