gcc- все статьи тега
Почему void* не является типом итератора?
Я протестировал следующий код с GCC 4.8, который не компилируется, потому что мы не можем сформировать ссылку на void. #include <iterator> int main() { std::iterator_traits<void*> test; } Означает ли это, что void* не является итератором ? (имеется в виду понятие здесь) Редактировать: Хорошо, вопрос был плохо сформулирован. На самом деле я спрашиваю, зачем C++ нужно такое поведение для void* ? Это из соображений безопасности, то есть чтобы люди не писали плохие вещи ? ...
Быстрое разделение на GCC / ARM
Насколько мне известно, большинство компиляторов делают быстрое деление путем умножения, а затем смещения бита вправо. Например, если вы проверяете этот поток SO, он говорит, что когда вы попросите компилятор Microsoft выполнить деление на 10, он умножит дивиденд на 0x1999999A (что составляет 2^32/10), а затем разделит результат на 2^32 (используя 32 сдвига вправо). Пока все хорошо. Как только я протестировал то же самое деление на 10 на ARM, используя GCC, компилятор сделал что-то немного ра ...
STM32 ADC Continuous Conv Mode не запускает преобразование автоматически
Я пытаюсь настроить АЦП над STM32F411RE в простом непрерывном режиме Conv. Я использовал CubeMX для генерации кода на основе драйверов HAL, и это некоторые части сгенерированного кода, которые intialize ADC: /* ADC1 init function */ void MX_ADC1_Init(void) { /**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) */ hadc1.Instance = ADC1; hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV8; hadc1.Init.Resolution = ADC_RESOLUTION ...
Можно ли поручить C не инициализировать глобальные массивы нулем?
Я пишу встроенное приложение, и почти вся моя оперативная память используется глобальными байт-массивами. Когда моя прошивка загружается, она начинается с перезаписи всего раздела BSS в оперативной памяти с нулями, что в моем случае совершенно не нужно. Могу ли я каким-то образом указать компилятору, что ему не нужно инициализировать нуль определенные массивы? Я знаю, что это также можно решить, объявив их указателями и используя malloc (), но есть несколько причин, по которым я хочу этого избе ...
Как скомпилировать 32-битный hello world на alpine?
Задан простой код hello world: #include <stdio.h> int main(void){ puts("hello"); return 0; } На 64-битной установке alpine linux я попытался скомпилировать ее как 64-битную и как 32-битную. Первый работает нормально, но во втором отсутствуют 32-битные библиотеки: ~ # gcc -Wall hello.c ~ # gcc -Wall -m32 hello.c /usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/../../../libss ...
Почему copy elision не работает с std:: move?
Я использую приведенный ниже код для тестирования копирования elision: class foo { public: foo() {cout<<"ctor"<<endl;}; foo(const foo &rhs) {cout<<"copy ctor"<<endl;} }; int g(foo a) { return 0; } int main() { foo a; g(std::move(a)); return 0; } Я ожидал, что будет вызван только конструктор по умолчанию, потому что аргумент g() является rvalue и копия будет удалена. Но результат показывает, что вызываются как конструктор по умолчанию, так ...
Как заставить gcc пропускать ошибки, но все равно выводить их.
Можно ли заставить gcc сообщать об ошибках, но продолжать компиляцию после них? По сути, я пытаюсь создать список ошибок в a .файл c, но gcc всегда завершается при первой ошибке. Я уже некоторое время гуглил, и это не очевидно, чтобы решить, насколько я могу судить. ...
Действительно ли gcc знает, как вывести сборку NASM
Итак, у меня есть простая программа на C, которая циклически перебирает args, передаваемые в main, а затем возвращает: #include <stdio.h> int main(int argc, char *argv[]) { int i; for(i = 0; i < argc; ++i) { fprintf(stdout, "%sn", argv[i]); } return 0; } Я хотел посмотреть, как gcc записывает сборку в формате NASM. Я осматривал выход в поле .ASM файл и заметил, что синтаксис был TASM. Ниже представлен файл и выход из Персидского залива. Я делаю что-то не та ...
сборка для ARMv6 с gnueabihf
Я пытаюсь создать приложение для ARMv6, но не получается. Я думаю, что проблема заключается в цепочке инструментов, которая поддерживает жесткий Float, но ARMv6 этого не делает. Ну, сначала я установил-march=armv6, где компиляция завершается неудачей. /opt/gcc-linaro-arm-linux-gnueabihf-4.8-2014.03_linux/arm-linux-gnueabihf/libc/usr/include/bits/byteswap.h: In function ‘__bswap_32’: /opt/gcc-linaro-arm-linux-gnueabihf-4.8-2014.03_linux/arm-linux-gnueabihf/libc/usr/include/bits/byteswap.h:45:1 ...
Как скомпилировать и запустить C в sublime text 3?
Я хотел бы скомпилировать и запустить программу C в sublime text 3 на ubuntu 14.04. В настоящее время программа компилируется с gcc, используя sublime text 3, выполняющий команду (см. ниже код), но мне было интересно, возможно ли, чтобы выходные данные выполнения программы также появлялись на консоли sublime text. Вот что мне в настоящее время нужно скомпилировать C-программу с sublime text 3 C_compile.sublime-build { "cmd" : ["gcc", "$file_name", "-o", "${file_base_name}"], "selector" : " ...
В чем разница между G++ и gcc?
в чем разница между G++ и gcc? Какие из них следует использовать для общей разработки на C++? ...
Как использовать / установить gcc на Mac OS X 10.8 / Xcode 4.4
Я установил Mountain Lion (Mac OS X 10.8), и теперь gcc, похоже, больше не доступен. Я также установил Xcode 4.4, поэтому больше нет каталога / Developer. Мне нужен gcc как для портов mac, так и для ruby gems (которые имеют собственные расширения). включает ли Xcode 4.4 gcc или есть способ установить gcc? ...
Как работают вероятные/маловероятные макросы в ядре Linux и в чем их преимущество?
я копался в некоторых частях ядра Linux и нашел такие вызовы: if (unlikely(fd < 0)) { /* Do something */ } или if (likely(!err)) { /* Do something */ } Я нашел их определение: #define likely(x) __builtin_expect((x),1) #define unlikely(x) __builtin_expect((x),0) Я знаю, что они для оптимизации, но как они работают? И насколько снижение производительности / размера можно ожидать от их использования? И стоит ли хлопот (и, вероятно, потерять переносимость), по крайней м ...
Как добавить путь включения по умолчанию для GCC в Linux?
Я бы хотел, чтобы gcc включал файлы из $HOME/include в дополнение к обычным каталогам include, но, похоже, нет аналога $LD_LIBRARY_PATH. Я знаю, что могу просто добавить каталог include в командной строке при компиляции (или в файле makefile), но мне бы очень понравился универсальный подход здесь, как в случае с библиотекой. ...
сценарий установки вышел с ошибкой: команда 'x86 64-linux-gnu - gcc' завершилась неудачно со статусом выхода 1
когда я пытаюсь установить odoo-server, Я получил следующую ошибку: error: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 кто-нибудь может помочь мне решить эту проблему? ...
Что такое makeinfo, и как его получить?
Я пытаюсь построить GNU grep, и когда я запускаю make, я получаю: [snip] /bin/bash: line 9: makeinfo: command not found что такое makeinfo, и как его получить? (Это Ubuntu, если это имеет значение) ...
Я не понимаю-Wl, - rpath-Wl,
для удобства я добавил соответствующие страницы ниже. мое (mis)понимание сначала: если мне нужно разделить параметры с ,, это означает, что второй -Wl это не другой вариант, потому что он приходит перед , что означает, что это аргумент для . Я не понимаю, как -rpath может быть ...
Как лучше всего отключить предупреждение о неиспользуемых переменных?
У меня есть кросс-платформенное приложение, и в некоторых из моих функций не все значения, передаваемые в функции, используются. Поэтому я получаю предупреждение от GCC, сообщая мне, что есть неиспользуемые переменные. что было бы лучшим способом кодирования вокруг предупреждения? #ifdef вокруг функции? #ifdef _MSC_VER void ProcessOps::sendToExternalApp(QString sAppName, QString sImagePath, qreal qrLeft, qreal qrTop, qreal qrWidth, qreal qrHeight) #else void ProcessOps::sendToExternalApp(QS ...
Удаление завершающего символа новой строки из ввода fgets()
Я пытаюсь получить некоторые данные от пользователя и отправить его в другую функцию в gcc. Код что-то вроде этого. printf("Enter your Name: "); if (!(fgets(Name, sizeof Name, stdin) != NULL)) { fprintf(stderr, "Error reading Name.n"); exit(1); } однако, я считаю, что он имеет строку n символ в конце. Так что если я войду John это заканчивается отправкой Johnn. Как мне удалить это n и отправить соответствующую строку. ...
Странная ошибка связывания: DSO отсутствует в командной строке
когда я компилирую openvswitch-1.5.0, я столкнулся со следующей ошибкой компиляции: gcc -Wstrict-prototypes -Wall -Wno-sign-compare -Wpointer-arith -Wdeclaration-after-statement -Wformat-security -Wswitch-enum -Wunused-parameter -Wstrict-aliasing -Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers -Wno-override-init -g -O2 -export-dynamic ***-lpthread*** -o utilities/ovs-dpctl utilities/ovs-dpctl.o lib/libopenvswi ...