0
是否有寫的更簡單的方法:使用文字來初始化malloc分配緩衝化合物
rver_t *buf = malloc(sizeof(rver_t));
rver_t tmp = (rver_t) {.op=OP_RVER, .protocol_version=1};
memcpy(buf, tmp, sizeof(rver_t));
初始化與結構一個malloc分配緩衝區?
注:的typedef發生在頭:
#define OP_RVER 1
typedef struct rver_s {
uint32_t op;
uint32_t protocol_version;
} rver_t;
我期望'* buf =(rver_t){...};'也可以。 –
什麼是整點?你的代碼中的複合文字提供_no_其他目的,但混淆。您正在嘗試解決這些問題無需解決的問題。只需將值直接分配給buf的成員即可。那麼代碼在可讀性和性能方面都是最優的。 – Lundin
@Lundin:只分配已知成員將不會zero-init未知的成員。複合文字或命名的臨時變量是唯一的**方法來做到這一點。 ('calloc'無效,因爲它不是表示值而是零) –