Если файлы не определяются как исходный код C ++, вы можете получить ошибки, подобные этой. Названы ли файлы c ++ с соответствующим расширением файла?
cat test.c
#include <vector>
int main() {}
gcc test.c
test.c:1:18: error: vector: No such file or directory
Команда выше скомпилирует код на C, но не на C ++. Помните, что это два разных языка. Для сборки программ на C ++ вы должны сообщить компилятору, что источником является C ++, так или иначе. Если вы используете g ++, он будет автоматически предполагать, что файлы с расширениями '.c' являются C ++ (по крайней мере, моя версия это делает. Или вы можете указать компилятору использовать C ++, передав -x c++
непосредственно перед передачей файла. Вы также должны указать компоновщик для включения библиотеки C ++. g ++ также делает это автоматически, или вы можете передать флаг компоновщика -lstdc++
.
Сложный путь:
gcc -x c ++ test.c -lstdc ++
Простой способ:
g ++ test.c
В ответ на ваш последний вопрос вы можете свободно смешивать <string.h>
и <string>
(хотя вам, вероятно, следует использовать <cstring>
вместо <string.h>
).