Здравствуйте, 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++, может станет понятнее.