Hi,
so jetzt hab ich noch ein Problem von früher.

.c Ausschnitt

Code:
#include <avr/io.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <avr/pgmspace.h>

#include "main.h"

void initio(void);
void delay_ms(unsigned int ms);
   
   norm_t NormArray[] PROGMEM =
   {   // Faktor Decimal Unit Name
      {1, 0, {  "V"}, {"VOLTAGE 1"}}, //  0
      {1, 3, { "mV"}, {"VOLTAGE 2"}}, //  1
      {1, 0, {  "A"}, {"CURRENT 1"}}, //  2
   };

int main( void )
{
   int i;

   unsigned char normAmound;
   
   normAmound = sizeof (NormArray);
   
   initio();
...
und die .h

Code:
...
#define NORM_UNIT_MAXLEN 4
#define NORM_NAME_MAXLEN 12


   
   typedef char PROGMEM prog_S8;

   typedef unsigned char PROGMEM prog_U8;

typedef struct Norm
{
    prog_U8 factor;   
    prog_U8 decimal;
             
    const prog_S8 sNormUnit[NORM_UNIT_MAXLEN];
    const prog_S8 sNormName[NORM_NAME_MAXLEN];
}norm_t;
der Compiler frisst das Zwar aber das ist leider nur die halbe Miete.

das sizeof() ergibt immer entweder die größe eines Elements oder die Pointergröße 2.

egal in welcher Konstellation:
normAmound = sizeof (NormArray);
normAmound = sizeof ( (norm_t*) NormArray);
normAmound = sizeof ( (norm_t**) NormArray);
normAmound = sizeof ( (PGM_P) NormArray);
normAmound = sizeof ( (PGM_P*) NormArray);
normAmound = sizeof ( (PGM_VOID_P) NormArray);
normAmound = sizeof ( (PGM_VOID_P*) NormArray);

gibt es eine Möglichkeit die größe des Arrays zu ermitteln?