делать её opaque struсt? Я хочу написать свой вектор, нормален ли такой подход? Принято ли так писать в Си?
                  
                  
                  
                  
                  
                  
                  
                  
                  // vector.h
                  
                  
                  typedef struct _vector * vector;
                  
                  
                  void append(vector v, int x);
                  
                  
                  
                  
                  
                  // vector.c
                  
                  
                  struct _vector {
                  
                  
                      int size;
                  
                  
                      int capacity;
                  
                  
                      int data[];
                  
                  
                  };
                  
                  
                
Ну да, вполне норм, правда непонятно, почему поля размера инт. (Ну и по аналогии со строками можно было бы сделать объединение для коротких векторов). Ну и лично я бы сделал 1 константный объект с функциями. Ну а также логичнее наверное было б мапу сделать вместо массива, что б не попипастить вектор при расширении. Хотя в этом случае чуть увеличивается время доступа к элементу на константу.
принято, если нужно скрывать поля, иметь всегда размер указателя (даже если добавить новые поля или убрать старые) и допустимо использовать динамическую аллокацию (через malloc или GC)
Обсуждают сегодня