Запитання з тегом «clang»

За запитаннями про передній кінець компілятора LLVM Для загальних питань щодо C використовуйте тег C.

8
Як викликати clang-формат через папку проекту cpp?
Чи є спосіб викликати щось на зразок clang-format --style=Webkitцілої папки проекту cpp, а не запускати його окремо для кожного файлу? Я використовую clang-format.pyі vimдля цього, але я припускаю, що є спосіб застосувати це один раз.

4
Чи можу я використовувати C ++ 11 з Xcode?
Я розглядаю можливість використання деяких функцій C ++ 11 (як, autoнаприклад,) у деяких крос-платформних проектах (Windows + Mac). У Windows Visual Studio підтримує частини майбутнього стандарту C ++ 11, що дозволить мені спростити частини кодової бази, тому, природно, мені було б цікаво почати використовувати ці функції. Але, наскільки мені відомо, …
86 c++  xcode  gcc  c++11  clang 

1
Що означає clang's -Wweak-vtables?
Я в основному не розумію кланг -Wweak-vtables. Ось те, що я спостерігав до цього часу: Випадок перший: (викликає попередження) class A { public: virtual ~A(){} }; class B : public A { public: virtual ~B(){} }; int main(){} Випадок другий: (не викликає попередження) class A { public: virtual ~A(){} }; …
78 c++  clang 

9
Catalina C ++: Використання заголовків <cmath> приводить до помилки: у глобальному просторі імен жоден член не названий "signbit"
Після оновлення до Каталіни з Mojave, Налаштування: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk in env. Я не можу скласти програму, яка використовує &lt;cmath&gt;заголовок. Я спробував змінити CFLAGS, CCFLAGS, CXXFLAGS, щоб вказати на MacOSSDK Location, які нічого не змінюють 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%] Building CXX object OgreMain/CMakeFiles/OgreMain.dir/src/OgreASTCCodec.cpp.o cd /Users/roman/Downloads/ogre-1.12.2/build/OgreMain …

1
Clang не компілює код, але gcc та msvc зібрали його
Я не розумію, в чому проблема: ні в моєму коді, ні в компіляторі (менш можливо). Існує такий фрагмент коду: #include &lt;iostream&gt; #include &lt;type_traits&gt; #include &lt;set&gt; template&lt;typename T, typename = void&gt; struct TestA: std::false_type {}; template&lt;typename T&gt; struct TestA&lt;T, std::void_t&lt;typename T::reverse_iterator&gt;&gt; : std::true_type {}; template&lt;typename T&gt; struct TestA&lt;T, std::void_t&lt;typename T::dummy_iterator&gt;&gt; : …

1
Чому std :: swap не працює на елементах вектор <bool> під Clang / Win?
У мене такий код: #include &lt;vector&gt; #include &lt;utility&gt; int main() { std::vector&lt;bool&gt; vb{true, false}; std::swap(vb[0], vb[1]); } Аргументи про розумність vector&lt;bool&gt;убік, це справно працювало на: Кланг для Mac Visual Studio для Windows GCC для Linux Потім я спробував побудувати його з Clang у Windows і отримав таку помилку (скорочена): error: …

4
Чи є фрагмент C, який ефективно розраховує безпечне доповнення без використання компілятора?
Ось функція C, яка додає intіншу, не вдається, якщо відбудеться переповнення: int safe_add(int *value, int delta) { if (*value &gt;= 0) { if (delta &gt; INT_MAX - *value) { return -1; } } else { if (delta &lt; INT_MIN - *value) { return -1; } } *value += delta; return …

1
Чи може бути змінена вбудована змінна після ініціалізації в C ++ 17?
Мій сценарій такий (він працював у кланге, але не в gcc) liba.hpp: inline int MY_GLOBAL = 0; libother.cpp: (dll) #include "myliba.hpp" void myFunc() { // MYGLOBAL = 28; } someexe.cpp: RunAppThatUsesBothLibAandLibOther(); Проблема полягає в тому, що вбудована змінна показувала 0 в тих місцях, де я очікувала 28, оскільки вона була …
11 c++  visual-c++  dll  clang  c++17 

1
Налаштуйте CMake у Windows, щоб використовувати кланг із командного рядка, щоб отримати сучасну підтримку OpenMP
У мене є невеликий тестовий проект, який використовує OpenMP для паралелізації. Моя мета - компілювати його, щоб він створював .dllі .libдля бібліотек (тому що мої реальні посилання на проект на зовнішні бібліотеки, що поширюються за допомогою цих типів), з підтримкою OpenMP 4.5 або новіших версій і робити це з командного …

1
Чому компілятори наполягають на використанні тут збереженого регістру?
Розглянемо цей код C: void foo(void); long bar(long x) { foo(); return x; } Коли я компілюю його на GCC 9.3 з будь-яким -O3або -Os, я отримую це: bar: push r12 mov r12, rdi call foo mov rax, r12 pop r12 ret Вихід з clang ідентичний за винятком вибору rbxзамість …
10 c  gcc  assembly  clang  x86-64 

3
Чи можна nullptr перетворити на uintptr_t? Різні компілятори не згодні
Розглянемо цю програму: #include &lt;cstdint&gt; using my_time_t = uintptr_t; int main() { const my_time_t t = my_time_t(nullptr); } Не вдалося компілювати з msvc v19.24: &lt;source&gt;(5): error C2440: '&lt;function-style-cast&gt;': cannot convert from 'nullptr' to 'my_time_t' &lt;source&gt;(5): note: A native nullptr can only be converted to bool or, using reinterpret_cast, to an …
10 c++  c++11  gcc  visual-c++  clang 

1
Проблема в GCC / C ++ 17 з класом шаблону шаблонів
Розглянемо 2 наступні перевантаження template&lt;typename T&gt; bool test() { return true; } template&lt;template&lt;typename ...&gt; class T&gt; bool test() { return false; } Перший працює для звичайних занять, а другий - для шаблонів, які не є інстанційними. Наприклад: std::cout&lt;&lt;test&lt;int&gt;()&lt;&lt;std::endl; &lt;-- this yields 1 std::cout&lt;&lt;test&lt;std::list&gt;()&lt;&lt;std::endl; &lt;--this yields 0 Тепер розглянемо наступну функцію …
10 c++  templates  gcc  clang  c++17 

2
Невідповідне виведення авто типів між різними компіляторами c ++
Отже, я намагаюся реалізувати крапковий продукт ( https://en.wikipedia.org/wiki/Dot_product ) в якомусь ароматі сучасного C ++ і придумав наступний код: #include &lt;iostream&gt; template&lt;class... Args&gt; auto dot(Args... args) { auto a = [args...](Args...) { return [=](auto... brgs) { static_assert(sizeof...(args) == sizeof...(brgs)); auto v1 = {args...}, i1 = v1.begin(); auto v2 = {brgs...}, …

2
Як перевірити, чи недійсний покажчик (void *) є одним із двох типів даних?
Я пишу функцію, де я хотів би прийняти 2 types параметрів. A string(char *) A, structureде буде n кількість елементів. І для досягнення цього я думаю використовувати простий void *тип параметра. Але я не знаю, як перевірити, чи є параметр того чи іншого типу безпечно.
10 c  gcc  types  clang 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.