Ich habe versucht, auf Clang und MSVC zu kompilieren, es scheint, dass sie das Mischen der beiden nicht zulassen. Wie soll man dann einen Header aus einer Bibliothek eines Drittanbieters einbinden? Gibt es dafür einen Trick, zum Beispiel „Einschließen vor Importen“ oder „Importieren vor Einschließen“ oder so etwas? Wirklich neugierig.
Gibt es außerdem einen Unterschied, ob man dies in einem Modul oder in einer einfachen alten Quelldatei macht? Gibt es hierfür zum Beispiel eine Ausnahme für das globale Modulfragment oder so? Wie wäre es mit einer einfachen Übersetzungseinheit, die kein Modul ist?
Einige Fehler, die ich erhalten habe:
/usr/lib/llvm-22/bin/../include/c++/v1/__ranges/zip_view.h:238:11:
error: require-Klausel unterscheidet sich in der Vorlagen-Neudeklaration
/usr/lib/llvm-22/bin/../include/c++/v1/__flat_map/flat_map.h:53:10:
Hinweis: '/usr/lib/llvm-22/bin/../include/c++/v1/__ranges/zip_view.h'
mehrmals enthalten, zusätzliche Include-Site im Header des Moduls
'std.' 53 | #include
/usr/lib/llvm-22/bin/../include/c++/v1/__ranges/zip_view.h:206:9:
Fehler: Neudefinition des Konzepts „__zip_all_forward“ mit anderen Vorlagenparametern oder Anforderungen 206 | Konzept __zip_all_forward
= (forward_range && ...);
Ein weiteres Beispiel aus meinem Projekt:
Code: Select all
// In a cpp file
#define STB_IMAGE_RESIZE_IMPLEMENTATION
#include "stbi_resize.h"
#define STB_IMAGE_WRITE_IMPLEMENTATION
#include "stbi_write.h"
#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"
import std; // How am I supposed use this if those headers include the standard library headers?
Mobile version