Информация об изменениях

Сообщение Re[17]: Разработка на чистом C от 06.11.2016 9:53

Изменено 06.11.2016 10:22 pagid

Здравствуйте, so5team, Вы писали:

S>Или даже вот в таком.


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

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

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

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


Чем на С++ лучше, кроме очевидного RAII, совершенно непонятно. И зачем функции дублируются и как это связано с недостатками С тоже непонятно.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[17]: Разработка на чистом C
Здравствуйте, so5team, Вы писали:

S>Или даже вот в таком.


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

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

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

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


Чем на С++ лучше, кроме очевидного RAII, совершенно непонятно. И зачем функции дублируются и как это связано с недостатками С тоже непонятно.