C-Programmierung, printf() und scanf() trotz include nicht erkannt; Woran kann es liegen?
Hallo,
arbeite grade an einem C-Programm. Das Programm selbst ist recht simpel, es sollen zwei Zahlen eingelesen werden die dann in jeweils einer Funktion addiert und multipliziert werden. Eigentlich nicht besonders schwer.
Das Problem ist, wie im Titel schon beschrieben, dass scanf() und printf() nicht erkannt werden.
Die genaue Fehlermeldung ist, "error: ‘scanf’ was not declared in this scope".
Was ich bisher als Lösung im Netz gefunden lief am Ende immer auf dasselbe hinaus -> "#include <cstdio>"
Tja, dieser Include ist aber bereits unzweifelhaft vorhanden, inder selben Datei in der printf() und scanf() zum Einsatz kommen. Trotzdem kommt beim Kompilieren die besagte Fehlermeldung.
Das Besondere an diesem eigentlich simplen Program ist, dass hier SGX zum Einsatz kommen soll. Die Addition soll als normaler Programmablauf stattfinden, was auch funktioniert. Die Multiplikation in einer SGX-Enclave ablaufen soll. scanf() und printf() stehen in der Funktion der Multiplikation für das Einlesen der Zahlen.
Woran könnte es liegen?
2 Antworten
Dafür wirds mehr Infos brauchen, dneke ich, aber ganz grundlegend:
#include <stdio.h>
wäre die korrekte Wahl bei C
#include <cstdio>
bei C++, wobei das dann im std NAmespace liegt.
Hallo und vielen Dank für die Tipps bis hierhin. Es wird noch etwas dauern bis ich sie umsetzen und hierrauf zurück kommen kann.
Nomalerweise ist der Dreierpack hilfreich:
- Minimales Codebeispiel
- Exakter Aufruf des Compilers
- vollständige Ausgabe
Wobei das letzte optional ist, weil man mit 1+2 versuchen kann es selbst nachzuvollziehen.
Eien Möglichkeit wäre, daß irgendein Include, das Du nutzt, in irgendeiner Form an den Namensräumen rumpfuscht.
Ist es denn denkbar, daß in einer Enclave IO faktisch nicht machbar ist und sich das nur so als Fehlermeldung manifestiert?
Ich habe mal kurz über den Product Brief gelesen, ansich sollte ein Call inklusive Syscall aus der enclave raus unbeschränkt sein.
Das sollte also schonmal als mögliches PRoblem wegfallen.
Hallo,
ich versuche C zu lernen, verstehe aber nicht wie man die funktion findet um die Datei dann laden zu können.
Aber man liest doch oft was von Standards bei Sprachen. Ansi ist oft zu lesen.
Wenn Du mit Linux arbeitest dann ist doch der Compiler austauschbar. Vielleicht ist der compiler nicht kompatibel mit Deinem Quellcode?
Ich hatte mal eine Ide installiert und da ging das Ausgabefenster sofort zu. Ich las dann man muß eine Abfrage einbauen damit das Ausgabefenster stoppt. Warum aber ist das beim hallo world dann ohne programmiert gewesen? Man sieht nicht immer ist etwas so wie es sein soll.
Man könnte Youtub Erklärbären fragen. Aber die verlassen den Editor nie und verstehen nicht was Anfänger wissen wollen.
Und in Foren sind viele genervt, weil man angeblich nicht in Bücher gucken würde,
Vielen Dank für die Antwort. Wie gesagt, die includes stimmen.
Ich habe es sowohl mit scanf() und printf() unter C als auch mit cin und cout unter C++ versucht.
Mit cin und cout unter C++ hatte ich das selbe Problem
"...not declared in this scope", trotz des #include<iostream>.
Was weiter Infos angeht, hier schon mal das Grundlegende:
OS: Ubuntu 20.04.0.1
Kernel: 5.4.0-139-generic
gcc-Version: 9.4.0 / g++-Version: 9.4.0
Welche weiteren Infos könnten nützlich sein?
Vielen Dank im Voraus.