2017-06-10 9 views
-2

J'ai deux variables const char [] PROGMEM que j'ai besoin de concaténer dans un autre const char [] PROGMEM. Je suis totalement nouveau à C et je ne pouvais pas comprendre comment utiliser strncpy sur un previous question.Combiner const char avec une chaîne dans un autre const const

const char data_one[] PROGMEM = {0x00,0x01,0x02}; 
const char data_combined[] PROGMEM = data_one + "{0x03,0x04,0x05}"; 
+0

Est-ce que ce code compile? Comprenez-vous également le mot clé 'const' et sa sémantique? –

+0

@EdHeal Il compile dans le cadre d'un [plus grand script] (https://raw.githubusercontent.com/Wi-PWN/Wi-PWN/master/arduino/Wi-PWN/data.h) – samdd

+0

Veuillez fournir un peu de code pour prouver cela –

Répondre

1

En utilisant memcpy (ou strcpy ou similaire) ne sera pas possible car la destination est constante et en lecture seule. Vous ne pouvez pas non plus utiliser quelque chose comme vous le montrez dans votre exemple de code. La seule solution que je peux penser est aussi celle que je ne recommande pas, car elle rendra le code quelque peu obscurci et difficile à lire et à maintenir, et cela utilise des macros pré-processeur.

+1

Il n'y a rien de mal avec les macros, quand elles sont utilisées correctement –

+1

@SamVarshavchik Vrai, mais dans ce cas je ne vois vraiment pas comment utiliser les macros sans ça devenant un cauchemar de maintenance –

+0

'#define DATA_ONE ...' et '#define DATA_TWO ...', alors utilisez 'DATA_ONE' et' DATA_TWO' dans deux endroits, chacun ne semble pas être particulier y difficile à maintenir. –