Я не могу установить python-ldap

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

Теперь к Вашему вопросу. Обратите внимание, что существует два главных типа преобразований:

  • Продвижения : об Этом типе можно думать кастинга от возможно более узкого типа до более широкого типа. При кастинге от символа до интервала, короткого к интервалу, плавание для удвоения является всеми продвижениями.
  • Преобразования : Они позволяют бросать от долго до интервала, интервала к неподписанному интервалу и т.д. Они могут в принципе вызвать потерю информации. Существуют правила для того, что происходит, если Вы присваиваетесь -1 к неподписанному типизированному объекту, например. В некоторых случаях неправильное преобразование может привести к неопределенному поведению. При присвоении двойного большего, чем, что плавание может сохранить к плаванию, поведение не определяется.

Позволяют нам посмотреть на Ваши броски:

int i = 10; 
unsigned int k = (unsigned int) i; // :1

float fl = 10.123;
unsigned int  ufl = (unsigned int) fl; // :2

char *p = "Stackoverflow Rocks"; 
unsigned char *up = (unsigned char *) p; // :3
  1. Этот бросок заставляет преобразование происходить. Никакой потери данных не происходит, с тех пор 10, как гарантируют, будет сохранен unsigned int. Если бы целое число было отрицательно, значение в основном перенесло бы максимальное значение неподписанного интервала (см. 4.7/2).
  2. значение 10.123 является усеченным к 10. Здесь, это делает причина, потерянная информации, очевидно. Как 10 вписывается в неподписанный интервал, поведение определяется.
  3. Это на самом деле требует большего внимания. Во-первых, существует преобразование устаревшее от строкового литерала до char*. Но давайте проигнорируем это здесь. (см. здесь ). Что еще более важно, что действительно происходит, если Вы бросаете к неподписанному типу? На самом деле результат этого является неуказанным на [1 124] 5.2.10/7 (обратите внимание, что семантика того броска совпадает с использованием reinterpret_cast в этом случае, так как это - единственная способность броска C++ сделать это):

указатель А на объект может быть явно преобразован в указатель на объект другого типа. За исключением того, что, преобразовывая rvalue типа “pointer к T1” к типу "указатель на T2" (где T1 и T2 являются типами объектов и где требования выравнивания T2 не более строги, чем те из T1) и назад к его исходному типу приводит к исходному значению указателя, результат такого преобразования указателя является неуказанным.

, Таким образом, Вы только в безопасности использовать указатель после того, как Вы вспомните char * снова.

239
задан Mateusz Piotrowski 15 July 2016 в 05:58
поделиться

2 ответа

sudo apt-get install build-essential python3-dev python2.7-dev libldap2-dev libsasl2-dev slapd ldap-utils python-tox lcov valgrind
0
ответ дан 23 November 2019 в 03:19
поделиться

Исправлять ошибку из-за зависимостей для установки python-ldap: загрузка Windows 7/10

whl файл

http://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap .

иск python 3.6 с

python_ldap-3.2.0-cp36-cp36m-win_amd64.whl

Развертывают файл в:

c:\python36\Scripts\

установка это с [1 110]

python -m pip install python_ldap-3.2.0-cp36-cp36m-win_amd64.whl
0
ответ дан 23 November 2019 в 03:19
поделиться
Другие вопросы по тегам:

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