Compilerfehlermeldung - Probleme mit Zeiger

Gast #2342237
Lesenswert?

Guten Morgen,

ich habe folgendes Problem mit einer Compilerfehlermeldung:
>>argument of type "obCan *" is incompatible with parameter of type "void *"
1
obCan   CanPort;
2

3

4
int main(void)
5
{
6
 ...
7
 while(1)
8
 {
9
  CanPort->Send(&CanPort,&Message,1);
10
 }
11
}

Header Datei Can.h:
//Can Sendefunktionen
1
int (*Send)(void*, stCanMessage*);

Funktion Datei Can.c:
1
int obCan_Send(obCan* pInstance, stCanMessage* Message)

Die Can Funktionen wurden in Ansi-C programmiert. Im Hauptprogramm wird 
die Headerdatei Can.h mit extern eingebunden. Der Grund dafür ist, dass 
das Hauptprogramm eine C++ Datei ist. Wie kann ich den Zeiger korrekt 
casten, damit diese Fehlermeldung nicht mehr erscheint?
Gast #2342251
Lesenswert?

Danke für die Antworten. Das mit void* habe ich bereits getestet. Die 
Funktion wird zwar ausgeführt, aber ich kann auf der PC-Seite keine CAN 
Botschaft empfangen. Wenn ich in ANSI-C bleibe, dann funktioniert diese 
Methode auch korrekt.
#2342264
Lesenswert?

Leo78 schrieb:
> Danke für die Antworten. Das mit void* habe ich bereits getestet. Die
> Funktion wird zwar ausgeführt, aber ich kann auf der PC-Seite keine CAN
> Botschaft empfangen. Wenn ich in ANSI-C bleibe, dann funktioniert diese
> Methode auch korrekt.

Dann hast du noch ein anderes Problem.

Wo hast du denn das CanPort Objekt her?

(Derartige void Pointer fallen normalerweise nicht aus der Luft, sondern 
man bekommt das Objekt, in dem man die Library um ein derartiges Objekt 
bittet. Daher auch der void Pointer, um anzudeuten, dass es den 
Verwender nicht zu interessieren hat, wie genau so ein Istance Objekt 
aussieht. Mit einem void Pointer kann man das verstecken)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren