c programmierung in visual studio

Gast #5210132
Lesenswert?

Nach langem Suchen wäre ich sehr dankbar, wenn mir jemand erklären 
könnte warum mein visual studio ohne das Einbinden von Headerdateien 
auskommt.

Ich erstelle eine main.c mit der main-Funktion und binde die Header der 
bla.c nicht ein. Trotzdem erkennt die main-Funktion die Funktion in der 
bla.c!

Wieso?
Gast #5210140
Lesenswert?

Er warnt nicht und führt meine Funktino f aus bla.c einfach aus, als ob 
die Funktion von vornherein der main-Funktion bekannt wäre. Da ich ein 
Bespiel für die Nutzung von Headerdateien vorbereite ist es sehr 
unpraktisch, dass die main.c keine header von mir benötigt!
Gast #5211005
Lesenswert?

main.c
------------------------------
#include<stdio.h>
//#include"func.h"


int main() {

  f();


  return(0);

}



func.c
------------------------------
//#include "func.h"
#include <stdlib.h>
#include <stdio.h>

void f() {

  printf("function f \n");

};



func.h
------------------------------
void f();

------------------------------
------------------------------


ich möchte bzw. dachte ich immer, dass wenn ich in der main.c die func.h 
nicht einbinde, die Funktion f() der main-Funktion nicht bekannt ist. 
Doch es läuft alles und die main.c gibt mir die printf in f aus! was 
verstehe ich falsch? oder läuft etwas falsch?
#5211036
Lesenswert?

Txiomix schrieb:
> dachte ich immer, dass wenn ich in der main.c die func.h
> nicht einbinde, die Funktion f() der main-Funktion nicht bekannt ist.

Falsch.
Dem Compiler ist sie nicht bekannt, er kann sie also nicht prüfen,
aber dem Linker ist sie sehr wohl bekannt, er wird sie aufrufen.

> Doch es läuft alles und die main.c gibt mir die printf in f aus! was
> verstehe ich falsch? oder läuft etwas falsch?

Du findest offenkundig das Fenster mit den Compilerwarnungen nicht.
Gast #5211069
Lesenswert?

ok, danke Michael
jetzt sehe ich folgendes
--------------------------------------------------------------------
Schweregrad  Code  Beschreibung  Projekt  Datei  Zeile 
Unterdrückungszustand
Warnung  C4013  "f" undefiniert; Annahme: extern mit Rückgabetyp int 
HeaderTest  c:\users\xeox\documents\visual studio 
2017\projects\headertest\headertest\main.c  7
--------------------------------------------------------------------

doch, dass er es ausführt ist normal?
ich dachte immer, er kann es ohne die header garnicht ausführen.

ich bekomme es also mit visual studio nicht so hin, dass es dem Linker 
auch nicht bekannt wird und man zeigen kann, dass es ohne der header 
nicht läuft?
Gast #5211168
Lesenswert?

Txiomix schrieb:
> ich bekomme es also mit visual studio nicht so hin, dass es dem Linker
> auch nicht bekannt wird und man zeigen kann, dass es ohne der header
> nicht läuft?

doch. einfach jeder Warnung als Fehler behandeln.

Optionen "Threat Warning As Errors" auf Yes setzen, keine Ahnung wie sie 
es in Deutsch genannt haben.
Beitrag #5779604 wurde von einem Moderator gelöscht.

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