c programmierung in visual studio

Gast #5210132
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
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
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?
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
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
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

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.