Funktionsdeklaration

#433530
Lesenswert?

Ganz normal, so wie man eben Zeiger deklariert.


header.h
********

void MyFunc( int* First, int* Secnd );


header.c
********

#include "header.h"

void MyFunc( int* First, int* Secnd )
{
  *First = 5;
  *Secnd = 7;
}

main.c
******

#include "header.h"

int main()
{
  int a, b;

  MyFunc( &a, &b );

  /* a hat jetzt den Wert 5, b den Wert 7 */

  return 0;
}

Steht in jedem noch so grindigem Lehrbuch über C drinnen.
Gast #433717
Lesenswert?

Hallo Karl Heinz,

jaja, zunächst mal Danke für Deine Antwort. Hatte einen Denkfehler, den 
ich einfach übersehen haben. Gefunden habe ich ihn heute morgen, bevor 
ich hier reingeschaut habe.
Ist mir schon klar, dass einfache Erklärungen in einem C-Buch stehen, 
aber s.o.
Zu Deiner Erklärung noch:
Es macht keinen Sinn Header.H in Header.C einzubinden. Funktionen in 
Header.H werden zudem als extern deklariert.
Man kann einfach hier nicht um Hilfe bitten ohne einen zugehörigen 
Spruch zu erhalten...
Grüße
Persönliche Seite #433727
Lesenswert?

> Es macht keinen Sinn Header.H in Header.C einzubinden.

O doch, so könnten dort auch Strukturen, Enums und irgendwelche 
Konstanten deklariert werden, die sowohl für "header.c" als auch für 
Aufrufer von Funktionen in "header.c" von Interesse sind.

> Funktionen in Header.H werden zudem als extern deklariert.

Das ist bei Funktionsprototypen implizit und kann daher entfallen.

Karl Heinz hat also -wie so oft- einfach nur recht.
#433729
Lesenswert?

> > Es macht keinen Sinn Header.H in Header.C einzubinden.
>
> O doch, so könnten dort auch Strukturen, Enums und irgendwelche
> Konstanten deklariert werden, die sowohl für "header.c" als auch für
> Aufrufer von Funktionen in "header.c" von Interesse sind.

Ganz abgesehen davon, überprüft dann der Compiler, ob die
Funktionsdekleration (also der Prototyp) auch mit der
tatsächlichen Funktionsdefinition (also der Implementierung)
übereinstimmt.
Es soll schon vorgekommen sein, dass man eines von beiden
verändert und auf das andere vergisst. Wer also behauptet,
dass das keinen Sinn ergibt, hat noch nie seine Zeit damit
verbracht, simple Tippfehler stundenlang zu suchen. Man
nimmt vom Compiler jede Hilfe an, die man kriegen kann.
#433776
Lesenswert?

Karl heinz Buchegger wrote:

> Ganz abgesehen davon, überprüft dann der Compiler, ob die
> Funktionsdekleration (also der Prototyp) auch mit der
> tatsächlichen Funktionsdefinition (also der Implementierung)
> übereinstimmt.


Genau so isses, das eigene *.h gehört selbstverständlich mit rein.

Der Linker macht ja keine Typüberprüfung mehr, er löst nur die Namen 
auf. Und findet er sie, ist er glücklich.


Peter

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