Ich habe einen Code geschrieben, der mathematische Funktionen aus einer Textdatei liest, die in einem C++ kompatiblen Format sind und mathematische Operationen auf sie anwenden. Dies ist eine kurze Zusammenfassung des Codes. Ich bin mir bewusst, dass #include eine Präprozessordirektive ist. Wenn der Inhalt der Datei eingelesen wurde, wird der Code jedesmal über ein Bash-Skript kompiliert.Include-Datei vom Terminal in Funktion gelesen mit #include
double myfunc(long double x){
return
#include "/.../filename"
}
int main{
"Maths stuff happens here"
}
Dies funktioniert wie beabsichtigt, aber ich möchte in der Lage sein, den Prozess zu beschleunigen und die Dateinamen vom Terminal zu lesen, anstatt sie in das Skript jedes Mal eingeben. Um dies zu tun Ich habe versucht, mit dem folgenden:
int g_argc;
char **g_argv;
void process_command_()
{
filename=argv[1]
}
double myfunc(long double x){
return
#include filename
}
int main{
"Maths stuff happens here"
}
Es war so etwas wie eine Strecke zu denken, dies funktionieren würde, aber ich bin nicht sicher, wie Sie die Dateinamen aus dem Terminal in meine Funktion zu lesen, als ob ich es getippt hatte in mir aufgrund der Funktion außerhalb von int main(). Ich habe mich in StackExchange umgesehen und ähnliche Probleme gefunden, aber keine der Lösungen hat für meinen Fall funktioniert.
Jede Hilfe wird sehr geschätzt.
Für Klarheit bearbeiten Dieser Code ist ein numerischer Integrationscode, der einen sehr großen Integranden als Eingabe aus einer Textdatei verwendet und die Integration mit der CUBA-Bibliothek durchführt. Ich habe den Prozess von Maple nach C++ verschoben, um Geschwindigkeit und Genauigkeit zu erhöhen. Das Skript funktioniert wunderbar und kann bekannte Werte ~ 400 mal schneller replizieren als Maple/Mathematica.
So funktioniert C++ überhaupt nicht **. Was ist das Problem, das du lösen willst? Sie müssen zurücktreten und die Situation neu bewerten. –
Ein '#include ...' im Funktionsumfang zu machen ist aus irgendeinem Grund eine schlechte Idee. Nichtsdestoweniger, vielleicht, [this] (http://stackoverflow.com/a/3179218/1621391) kann relevant sein - Dann können Sie das MACRO mit einigen Compiler-Schalter steuern – WhiZTiM
Es ist eine numerische Integration Routine, die ursprünglich in Maple gemacht wurde/Mathematica aber ich brauchte eine Geschwindigkeitssteigerung, also wandle ich den Integranden von Maple in ein C++ kompatibles Format und gebe diese Datei in eine C++ Routine mit der CUBA-Bibliothek ein. Es bietet eine enorme Geschwindigkeitssteigerung, ich wollte nur den Rechenprozess beschleunigen, indem ich mit einem Bash-Skript automatisiert habe. – Yeti