2015-04-24 5 views
2

Я пытаюсь выяснить, как я могу получить два байта appSignatureBytes массив в пределах массива commentExtension, поэтому код можно сохранить отдельно; был бы способ сделать это? appSignatureBytes[0-sizeof(appSignatureBytes)], чтобы все элементы были вставлены во время компиляции?Возможно, массив uint8_t в пределах другого массива uint8_t?

const uint8_t appSignatureBytes [] = { 0x48, 0x69 }; 

const uint8_t commentBytesSizeByte = sizeof(appSignatureBytes); 

const uint8_t commentExtension [] = { extensionIntroducerByte, 
commentLabelByte, commentBytesSizeByte, appSignatureBytes[0-sizeof(appSignatureBytes)], 
blockTerminatorByte }; 
+0

@RSahu, что альтернатива в C? – klcjr89

+1

Я ошибался, потому что это невозможно в C. Ответ @CarlNorum показывает, как это сделать. –

ответ

4

Если вам действительно нужно во время компиляции, вы можете использовать общее определение препроцессора:

#define MAGIC_BYTES 0x48, 0x69 
const uint8_t appSignatureBytes[] = { MAGIC_BYTES }; 

const uint8_t commentBytesSizeByte = sizeof appSignatureBytes; 

const uint8_t commentExtension[] = 
{ 
    extensionIntroducerByte, 
    commentLabelByte, 
    commentBytesSizeByte, 
    MAGIC_BYTES, 
    blockTerminatorByte 
}; 
+2

Красивый трюк. Сегодня узнал что-то новое. –

Смежные вопросы