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

85
Большая разница (x9) во времени выполнения между почти идентичным кодом на C и C ++

Я пытался решить это упражнение с сайта www.spoj.com: FCTRL - Factorial Вам не обязательно это читать, просто сделайте это, если вам интересно :) Сначала я реализовал это на C ++ (вот мое решение): #include <iostream> using namespace std; int main() { unsigned int num_of_inputs; unsigned int...

84
объединить два скомпилированных GCC объектных файла .o в третий .o файл

Как объединить два объектных файла .o, скомпилированных GCC, в третий файл .o? $ gcc -c a.c -o a.o $ gcc -c b.c -o b.o $ ??? a.o b.o -o c.o $ gcc c.o other.o -o executable Если у вас есть доступ к исходным файлам, -combineфлаг GCC объединит исходные файлы перед компиляцией: $ gcc -c -combine a.c...

83
Рекомендуемые параметры предупреждений gcc для C [закрыто]

Закрыто . Этот вопрос основан на мнении . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы на него можно было ответить с помощью фактов и цитат, отредактировав этот пост . Закрыт 6 лет назад . Уточните этот вопрос Какие еще предупреждения, кроме -Wall,...

83
Есть ли альтернатива для flex / bison, которую можно использовать на 8-битных встроенных системах?

Я пишу небольшой интерпретатор для простого языка, подобного BASIC, в качестве упражнения на микроконтроллере AVR на C с использованием инструментальной цепочки avr-gcc. Однако мне интересно, есть ли какие-нибудь инструменты с открытым исходным кодом, которые могли бы помочь мне написать лексер и...

83
Какие есть параметры командной строки --start-group и --end-group?

Какова цель этих параметров командной строки? Пожалуйста, помогите расшифровать значение следующей командной строки: -Wl,--start-group -lmy_lib -lyour_lib -lhis_lib -Wl,--end-group -ltheir_lib Очевидно, это как-то связано с линковкой, но в руководстве GNU ничего не говорится о том, что именно...

82
Конфликт между учебником Стэнфорда и GCC

Согласно этому фильму (около 38-й минуты), если у меня есть две функции с одинаковыми локальными переменными, они будут использовать одно и то же пространство. Итак, следующая программа должна напечатать 5. Компиляция с gccрезультатами -1218960859. Почему? Программа: #include <stdio.h> void...

81
Почему панель GCC работает с NOP?

Я работал с C некоторое время и совсем недавно начал разбираться в ASM. Когда я компилирую программу: int main(void) { int a = 0; a += 1; return 0; } В дизассемблере objdump есть код, но после ret нет: ... 08048394 <main>: 8048394: 55 push %ebp 8048395: 89 e5 mov %esp,%ebp 8048397: 83 ec 10...

80
Пытаемся понять параметр gcc -fomit-frame-pointer

Я попросил Google дать мне значение gccпараметра -fomit-frame-pointer, который перенаправляет меня к приведенному ниже утверждению. -fomit-frame-pointer Не храните указатель фрейма в регистре для функций, которым он не нужен. Это позволяет избежать инструкций по сохранению, настройке и...

79
Почему компилятор выдает предупреждение: «отсутствует инициализатор»? Разве структура не инициализирована?

Я создаю своего рода интерфейс для программы. Для запуска программы я использую вызов CreateProcess(), который, помимо прочего, получает указатель на STARTUPINFOструктуру. Чтобы инициализировать структуру, которую я делал: STARTUPINFO startupInfo = {0}; // Or even '\0'. startupInfo.cb =...

79
Неопределенная ссылка на static const int

Я сегодня столкнулся с интересной проблемой. Рассмотрим этот простой пример: template <typename T> void foo(const T & a) { /* code */ } // This would also fail // void foo(const int & a) { /* code */ } class Bar { public: static const int kConst = 1; void func() { foo(kConst); //...

79
Связывание с динамической библиотекой с зависимостями

Рассмотрим следующий сценарий: Общая библиотека libA.so, без зависимостей. Общая библиотека libB.so с libA.so в качестве зависимости. Я хочу скомпилировать двоичный файл, который связан с libB. Должен ли я связать двоичный файл только с libB или с libA? Есть ли способ связать только с прямыми...

64
Не могу скомпилировать C программу на Mac после обновления до Catalina 10.15

Есть предыдущий вопрос: « Не могу скомпилировать программу C на Mac после обновления до Mojave» , и ответы на него охватили большинство вариантов того, что идет не так. Теперь, по состоянию на понедельник 2019-10-07, вы можете перейти на macOS Catalina 10.15. Еще раз, во время обновления...

39
Почему переключатель не оптимизирован так же, как цепочка, если еще в c / c ++?

Следующая реализация square производит серию операторов cmp / je, как я и ожидал от цепочки if: int square(int num) { if (num == 0){ return 0; } else if (num == 1){ return 1; } else if (num == 2){ return 4; } else if (num == 3){ return 9; } else if (num == 4){ return 16; } else if (num == 5){...

23
gcc-10.0.1 специфический сегмент

У меня есть пакет R с скомпилированным кодом C, который довольно долго был относительно стабильным и часто тестировался на широком спектре платформ и компиляторов (windows / osx / debian / fedora gcc / clang). Совсем недавно была добавлена ​​новая платформа для тестирования пакета: Logs from checks...

21
Почему GCC агрегирует инициализацию массива в первую очередь с нулями, включая ненулевые элементы?

Почему gcc заполняет весь массив нулями вместо оставшихся 96 целых чисел? Все ненулевые инициализаторы находятся в начале массива. void *sink; void bar() { int a[100]{1,2,3,4}; sink = a; // a escapes the function asm("":::"memory"); // and compiler memory barrier // forces the compiler to...

20
Как лямбда-макрос создает лямбду?

Я нашел этот кусок кода на GitHub, но не совсем понял: #define lambda(ret_type, _body) ({ ret_type _ _body _; }) Затем: int (*max)(int, int) = lambda(int, (int x, int y) { return x > y ? x : y; }); int max_value = max(1, 2); // max_value is 2 Что делают подчеркивания внутри #defineи как он...

14
Почему GCC не может предположить, что std :: vector :: size не изменится в этом цикле?

Я обратился к коллеге, который if (i < input.size() - 1) print(0);будет оптимизирован в этом цикле, чтобы input.size()он не читался на каждой итерации, но оказалось, что это не так! void print(int x) { std::cout << x << std::endl; } void print_list(const std::vector<int>&...