рассмотрим следующую структуру:__attribute __ ((упакованный)) альтернативные
typedef struct __attribute__((packed)) a{
int a1;
int b2;
char cArray[5];
int c3;
} Mystruct;
Теперь в моем коде, Im делает это:
char source[50];
Mystruct mm;
//...
//initialization and other codes
//...
memcpy(&mm,source,sizeof(mm));
Я пытаюсь заполнить структуру из строки (из файла, чтобы быть более конкретным), и, следовательно, я не хочу заполнения. Но думаю, что упаковка влияет и на производительность.
Итак, мой вопрос в том, есть ли другой способ достичь того, чего я хочу?
Можно ли сделать то же самое (заполнение из строки) переменными-членами класса в C++? Если да, то как?
Пожалуйста, разместите * фактический * код, а не его приближение. –
Извините @PaulR, я не могу опубликовать фактический код прямо сейчас. однако приведенный выше код может объяснить мой вопрос. – Dipto
Я настоятельно рекомендую вам приобрести и прочитать ['Write Portable Code'] (http://www.hookatooka.com/wpc/). Вы не хотите использовать этот подход. Не только потому, что он не переносится (думайте о проблемах с endianess), но он влияет на производительность и атомарность (32-разрядный доступ не согласован на x86 без префикса LOCK). Гораздо лучше [маршал/unmarshal] (http: //en.wikipedia.org/wiki/Marshalling_ (computer_science)), хотя это немного больше работы. – jszakmeister