Ich habe da mal eine Frage an C-Crack's. Ich habe folgendes Konstruckt:
struct tag_t_var;
typedef void (t_in_handler)(const struct tag_t_var* var, const unsigned char* in);
t_in_handler in_no_check_handler;
typedef struct tag_t_var
{
unsigned char size;
union
{
unsigned char *out;
t_in_handler* in_handler;
}u;
unsigned char* data;
/*
....
*/
}
t_var;
unsigned char my_data[4];
const t_var my_vars[] =
{
{4, in_no_check_handler, my_data}
};
void in_no_check_handler(const t_var* var, const unsigned char* in)
{
int i;
for (i = 0; i < var->size; i++)
{
var->data[i] = in[i];
}
}
Alles anzeigen
Eine Struktur soll einen Zeiger auf eine Funktion enthalten. Beim Aufruf der Funktion, soll diese einen Zeiger auf genau solch eine Struktur als Parameter erhalten. Es wird ein vorinitialisiertes Array dieser Struktur angelegt.
Zum Editieren und für Modultests verwende ich Visual Studio. Visual Studio mault über die Initialisierung von my_vars in Zeile 26 rum, der Targetcompiler nicht:
warning C4047: 'Initialisierung': Anzahl der Dereferenzierungen bei 'unsigned char *' und 't_in_handler (__cdecl *)' unterschiedlich
Wie kann ich ohne Warnung initialisieren??
Ich möchte ein union Konstrukt verwenden, da das Array relativ groß ist und nicht viel ROM frei bleiben wird.
Gruß
e9hack