#c #syntax
#c #синтаксис
Вопрос:
Сегодня работал с некоторым кодом SASL и заметил ==
в приведенном ниже фрагменте. Я не эксперт в C, но единственный способ, которым я когда-либо использовал этот оператор, — это проверить равенство. Ошибка?
if ( !conn ) {
rc == LDAP_SUCCESS;
goto done;
}
Комментарии:
1. вероятно, ошибка.
2. Это ошибка. Для существования этого кода нет причин. Хотя, чтобы ответить на вопрос в целом, оператор
==
мог бы использоваться при присваивании, напримерint success = (rc == LDAP_SUCCESS)
3. Если вы действительно скомпилируете код, вы увидите предупреждения. Рассматривайте предупреждения как ошибки — и у вас будет ваша ошибка. 🙂
4.
rc == LDAP_SUCCESS;
это NOP.5. Обратите внимание: не заменяйте вслепую
rc == LDAP_SUCCESS
наrc = LDAP_SUCCESS
(что может удалить предупреждение), но проверьте, какrc
используется послеdone
метки, и действуйте соответственно.
Ответ №1:
Это утверждение ничего не делает. Это ошибка.
Теперь вы МОГЛИ бы присвоить (rc == LDAP_SUCCESS) переменной, которая сохраняла бы логический результат этой операции (1, если true, или 0, если false).