Стандартный C ++ способ вызова стандартных библиотечных функций C

Вы также можете изменить параметры отображения ярлыков, например fontsize, с помощью следующей строки:

zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()]
2
задан Mike Sweeney 16 January 2019 в 08:37
поделиться

3 ответа

В отношении # 3 :

Библиотеки .h должны поместить все свои имена в глобальное пространство имен, а также могут разместить их в пространстве имен std::.

Начальная версия c должна поместить все свои имена в пространство имен std::, а также может разместить их в глобальном пространстве имен.

0
ответ дан ETO 16 January 2019 в 08:37
поделиться

Вы должны всегда включать то, что говорит вам документация. (Реализации стандартной библиотеки C ++ часто пишутся так, чтобы функции были доступны через другие включения, но, конечно, полагаясь на это, означает, что ваш код не переносим.) Обратите внимание, что в C. нет стандартной функции getline Но есть один в C ++:

std::getline()

определен в заголовке <string>. Стандарт C ++ не гарантирует, что в общем случае функции C доступны в глобальном масштабе или даже являются частью стандартной библиотеки C ++. Два языка начали свое расхождение много лет назад, и поэтому идея о том, что C ++ является в некотором смысле надмножеством C-библиотек, - это миф.

Ссылка: https://en.cppreference.com/w/cpp/string/basic_string/getline

.
0
ответ дан Bathsheba 16 January 2019 в 08:37
поделиться

Должно быть легко связать любую библиотеку C с C ++ в целом, а не только со стандартными заголовками.

Обратите внимание, что вам, возможно, придется пройти через man, чтобы выяснить, какую версию какого Unix был введен метод, или если это конкретное расширение, и решить для себя, приемлема ли эта историческая начальная точка для вас. Но это правда, если вы написали программу на C вместо C ++.

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

Таким образом, все работает так, что функции C, включая функции библиотеки C, вводятся с ключевым словом extern "C".

Когда вы #include заголовочные файлы C, они обычно содержат некоторый код, такой как:

/* C++ needs to know that types and declarations are C, not C++.  */
#ifdef  __cplusplus
# define __BEGIN_DECLS  extern "C" {
# define __END_DECLS    }
#else
# define __BEGIN_DECLS
# define __END_DECLS
#endif

__BEGIN_DECLS

... который представляет раздел функций интерфейса C.

Если вам нужно было включить действительно старую библиотеку C, которая этого не делала, вы можете легко добавить extern "C" вокруг #include:

extern "C" {
#include "ancientinterface.h"
};

Вы также можете написать свои собственные методы, которые Интерфейс "C" совместим.

0
ответ дан Gem Taylor 16 January 2019 в 08:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: