Мне нравится второе, другим людям нравится первое.
На самом деле, я предпочитаю третий вид первому:
if (NULL == ptr) {
...
}
Потому что тогда я:
Функционально они эквивалентны.
Даже если указатель NULL
не равен «0» (все нулевые биты), if (!ptr)
сравнивается с указателем NULL
.
Следующее неверно. Это все еще здесь, потому что есть много комментариев, ссылающихся на это: Однако не сравнивайте указатель с буквальным нулем. Это будет работать почти везде, но поведение IIRC неопределено.
Когда я столкнулся с этой проблемой, я выбрал реляционную базу данных с возможностями полнотекстового поиска (я использовал PostgreSQL 8.3, который имеет встроенную поддержку ft с поддержкой стемминга и тезауруса). Таким образом, база данных может выполнять запросы с использованием команд SQL и ft. Обратной стороной является то, что вам нужна БД с возможностями полнотекстового поиска, и эти возможности могут быть хуже, чем у lucene.