2012-01-09 5 views
1

Я читал этот сайтМожно ли смешивать С и С ++ код

http://www.cplusplus.com/reference/clibrary/cstring/strcmp/

который является ++ website.But C, он использует Printf для отображения вещи. Тем не менее, я думал, что в C++ мы используем cout для отображения вещей. Можем ли мы смешать код C и C++, как они здесь делали.

+0

Да, с осторожностью вы можете смешать их. Нет, обычно это нецелесообразно. Использование 'cout' дает вам безопасность типа, отсутствующую в' printf() ', а также расширяемость. Используй это. –

+1

cplusplus.com известен ошибками в документации и примерах. –

+0

@JonathanLeffler Зачем комментировать? Это совершенно правильный ответ, нет? –

ответ

7

Не существует сочетания кода C++ и C. В то время как вы, конечно, можете использовать cout в C++, вы также можете использовать printf. Подавляющее большинство вещей, которые являются законным кодом C, также являются законным кодом на C++. Фактически, раздел 27.8.2 стандарта C++ требует определения printf, если ваш код #include<cstdio>.

+0

Мне нужно включить . Не могу я просто включить Programmer

+0

Вы можете включить ''. –

+0

то в чем разница между двумя – Programmer

1

Да, C и C++ (с очень небольшим исключением) возможны и легко смешиваются. Одним из примеров, где могут возникнуть проблемы, является смешение printf и cout, вывод может не появиться в ожидаемом порядке.

1

В C++ C-runtime доступен, поскольку C++ в значительной степени совместим с C по дизайну, чтобы быть обратно совместимым. Тем не менее, если вы программируете C++, вам следует избегать использования времени выполнения C как можно больше, поскольку C++ предлагает гораздо больше возможностей и безопасности. например вектор, строка

3

Технически говоря, да вы может Смешать код C и C++. C++ является почти супер-множеством C и имеет все библиотеки C (за исключением нескольких незначительных отличий).

Однако, действительно ли вы должны смесь C и C++ это уже другая история. Вообще говоря, если вы пишете на C++, вы должны придерживаться конструкций C++.

+1

Что вы подразумеваете под «придерживаться конструкций C++»? Является ли 'printf' не конструкцией C++? Что такое 'int32_t', это конструкция C++? –

+0

Да, если вы хотите быть педантичным. В основном я ссылался на функции, добавленные в C++, которые дублируют существующие функции C. ('printf()'/'cout', массивы/векторы, cstring /' string') Не говоря о том, что они не могут использоваться на C++ (и в некоторых случаях они должны быть в некоторых случаях), но C++ упрощает их работу с. – Mysticial

1

Конечно, вы можете! Но убедитесь, что вы сохраняете код в файле .cpp. Некоторые компиляторы не собирали код C++ в файле .c.

1

C++ содержит (большую часть) C как подмножество (хотя это не строгое подмножество). Если вы используете #include <cstdio>, вы можете использовать такие вещи, как printf, однако, если у вас нет по-настоящему веской причины, вы должны использовать конструкторы C++ (std::vector, std::cout, new, delete, и т. Д.).

0

да вы можете смешать 2 коды, но затем полученный код должен быть в C++, если не хотят, чтобы изменить для совместимости с C. C++ обратно большую часть кода

0

Для того, чтобы ++ компилятор C знать что вы вызываете код С:

#ifdef __cplusplus 
extern "C" { 
#endif 

void myCFunction(); 

#ifdef __cplusplus 
} 
#endif 
Смежные вопросы