Ich habe eine Weile mit Clang gespielt und bin auf "test / SemaTemplate / Dependent-Template-Recovery.cpp" (in der Clang-Distribution) gestoßen, das Hinweise zur Wiederherstellung nach einem Vorlagenfehler geben soll. Das Ganze lässt sich leicht auf ein minimales Beispiel reduzieren: template<typename T, typename U, int N> struct X { void f(T* t) …
Ich erwäge die Verwendung einiger C ++ 11-Funktionen (wie autozum Beispiel) in einigen plattformübergreifenden Projekten (Windows + Mac). Unter Windows unterstützt Visual Studio Teile des kommenden C ++ 11-Standards, mit denen ich Teile der Codebasis vereinfachen kann, sodass ich natürlich daran interessiert wäre, diese Funktionen zu verwenden. Soweit mir bekannt …
Grundsätzlich verstehe ich Clangs nicht -Wweak-vtables. Folgendes habe ich bisher beobachtet: Fall eins: (löst die Warnung aus) class A { public: virtual ~A(){} }; class B : public A { public: virtual ~B(){} }; int main(){} Fall zwei: (löst keine Warnung aus) class A { public: virtual ~A(){} }; int …
Ich bin gespannt warum der folgende Code: #include <string> int main() { std::string a = "ABCDEFGHIJKLMNO"; } Beim Kompilieren mit -O3ergibt sich folgender Code: main: # @main xor eax, eax ret (Ich verstehe vollkommen, dass das nicht verwendete nicht benötigt wird, aso dass der Compiler es vollständig aus dem generierten …
Ich habe mit dem Compiler Explorer gespielt und bin auf ein interessantes Verhalten mit dem ternären Operator gestoßen, wenn ich so etwas verwendet habe: std::string get_string(bool b) { return b ? "Hello" : "Stack-overflow"; } Der vom Compiler generierte Code dafür (Clang Trunk, mit -O3) lautet wie folgt: get_string[abi:cxx11](bool): # …
Es gibt einige Dateien in meinem iOS-Projekt, die einige Warnungen enthalten, und ich möchte diese Warnungen ignorieren. Ich möchte keine Warnungen im gesamten Projekt deaktivieren (weiß, wie das geht), sondern nur einige bestimmte Dateien. Gibt es eine Möglichkeit, alle Warnungen aus einer bestimmten Datei vollständig zu ignorieren? Ich verwende LLVM …
Nach dem Upgrade von Mojave auf Catalina, Setup: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk in der Umgebung. Ich kann kein Programm kompilieren, das den <cmath>Header verwendet. Ich habe versucht, CFLAGS, CCFLAGS, CXXFLAGS so zu ändern, dass sie auf den MacOSSDK-Speicherort verweisen, der nichts ändert Scanning dependencies of target OgreMain /Applications/Xcode.app/Contents/Developer/usr/bin/make -f OgreMain/CMakeFiles/OgreMain.dir/build.make OgreMain/CMakeFiles/OgreMain.dir/build [ 0%] …
Ich verstehe nicht, was das Problem ist: entweder in meinem Code oder im Compiler (weniger möglich). Es gibt einen Code wie diesen: #include <iostream> #include <type_traits> #include <set> template<typename T, typename = void> struct TestA: std::false_type {}; template<typename T> struct TestA<T, std::void_t<typename T::reverse_iterator>> : std::true_type {}; template<typename T> struct TestA<T, …
Ich habe folgenden Code: #include <vector> #include <utility> int main() { std::vector<bool> vb{true, false}; std::swap(vb[0], vb[1]); } Argumente über die Vernunft vector<bool>beiseite, das funktionierte gut bei: Clang für Mac Visual Studio für Windows GCC für Linux Dann habe ich versucht, es mit Clang unter Windows zu erstellen und habe den …
Hier ist eine C-Funktion, die eine intzu einer anderen hinzufügt und fehlschlägt, wenn ein Überlauf auftreten würde: int safe_add(int *value, int delta) { if (*value >= 0) { if (delta > INT_MAX - *value) { return -1; } } else { if (delta < INT_MIN - *value) { return -1; …
Mein Szenario ist das folgende (es hat in clang funktioniert, aber nicht in gcc) liba.hpp: inline int MY_GLOBAL = 0; libother.cpp: (dll) #include "myliba.hpp" void myFunc() { // MYGLOBAL = 28; } someexe.cpp: RunAppThatUsesBothLibAandLibOther(); Das Problem ist, dass die Inline-Variable an Stellen, an denen ich 28 erwartet hatte, 0 anzeigt, …
Ich habe ein kleines Testprojekt , das OpenMP für Parallelisierung verwendet. Mein Ziel ist es, es so zu kompilieren, dass es produziert .dllund .libfür Bibliotheken (da mein reales Projekt Links zu externen Bibliotheken enthält, die mit diesen Typen verteilt werden), mit Unterstützung für OpenMP 4.5 oder neuer, und dies über …
Betrachten Sie diesen C-Code: void foo(void); long bar(long x) { foo(); return x; } Wenn ich es auf GCC 9.3 mit entweder -O3oder kompiliere -Os, erhalte ich Folgendes: bar: push r12 mov r12, rdi call foo mov rax, r12 pop r12 ret Die Ausgabe von clang ist identisch, außer dass …
Betrachten Sie dieses Programm: #include <cstdint> using my_time_t = uintptr_t; int main() { const my_time_t t = my_time_t(nullptr); } Es konnte nicht mit msvc v19.24 kompiliert werden: <source>(5): error C2440: '<function-style-cast>': cannot convert from 'nullptr' to 'my_time_t' <source>(5): note: A native nullptr can only be converted to bool or, using …
Betrachten Sie die 2 folgenden Überlastungen template<typename T> bool test() { return true; } template<template<typename ...> class T> bool test() { return false; } Der erste funktioniert für reguläre Klassen, während der zweite für Vorlagen funktioniert, die nicht instanziiert sind. Zum Beispiel: std::cout<<test<int>()<<std::endl; <-- this yields 1 std::cout<<test<std::list>()<<std::endl; <--this yields …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.