Re[18]: Разработка на чистом C
От: so5team https://stiffstream.com
Дата: 06.11.16 10:09
Оценка: +1
Здравствуйте, pagid, Вы писали:

P>На С это будет так


P>
P>int ub_ctx_add_ta(struct ub_ctx* ctx, const char* ta)
P>{
P>  char* dup = strdup(ta);
P>  if(!dup) return UB_NOMEM;
P>  int res = UB_NOERROR;
P>  lock_basic_lock(&ctx->cfglock);

P>  if(ctx->finalized) res = UB_NOERROR;
P>  else
P>    if(!cfg_strlist_insert(&ctx->env->cfg->trust_anchor_list, dup)) res = UB_AFTERFINAL;

P>  lock_basic_unlock(&ctx->cfglock);
P>  free(dup);
P>  return res;   
P>} 
P>


P>Чем на С++ лучше, кроме очевидного RAII, совершенно непонятно.


Так толсто, что даже тонко. Особенно мне нравится вот это:
int res = UB_NOERROR;
lock_basic_lock(&ctx->cfglock);

if(ctx->finalized) res = UB_NOERROR;

У вас res уже содержит UB_NOERROR. Запутались в трех простых соснах. В типа простом C.

P>И зачем функции дублируются и как это связано с недостатками С тоже непонятно.


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