Вопросы с тегом «clang»

По вопросам о внешнем интерфейсе компилятора clang LLVM. Для общих вопросов о C используйте тег C.

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

9
Catalina C ++: использование заголовков <cmath> приводит к ошибке: в глобальном пространстве имен нет члена с именем signbit
После обновления до Каталины из Мохаве, настройка: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk в env. Я не могу скомпилировать программу, которая использует &lt;cmath&gt;заголовок. Я попытался изменить CFLAGS, CCFLAGS, CXXFLAGS, чтобы они указывали на расположение MacOSSDK, которое ничего не меняет 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 …

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; : std::true_type …

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 и получил …

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; …

1
Можно ли изменить встроенную переменную после инициализации в C ++ 17?
Мой сценарий следующий (он работал в Clang, но не в 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 для использования clang из командной строки, чтобы получить современную поддержку 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 идентичны, за исключением того, …
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 Теперь рассмотрим следующую функцию шаблона: template&lt;typename …
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 (void *) одним из двух типов данных?
Я пишу функцию, где я хотел бы принять 2 typeс параметров. A string(символ *) А structureгде будет n элементов. И чтобы достичь этого, я думаю об использовании простого void *типа параметра. Но я не знаю, как проверить, является ли параметр того или иного типа, безопасно.
10 c  gcc  types  clang 
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.