Описание тега gcc-extensions
GCC предоставляет расширения, которых нет в стандарте ISO C или C++.
2
ответа
Как использовать Arduino с Microsoft Visual Studio (из-за проблем с прекомпилятором #include_next)
Короче, Мне нужно сделать это, #include_next <limits.h> Однако Visual Studio не нравится это и жалуется, Error 40 error C1021: invalid preprocessor command 'include_next' c:\program files (x86)\arduino\hardware\tools\g++_arm_none_eabi\arm-none…
08 июл '14 в 18:09
2
ответа
Есть ли в C++ массивы переменной длины?
Я всегда думал, что массивы переменной длины недопустимы в C++ (см.: Почему массивы переменной длины не являются частью стандарта C++?). Но почему этот код компилируется и работает? #include <iostream> using namespace std; int main () { int n;…
25 фев '14 в 11:55
1
ответ
Как остановить Eclipse CDT от выдачи ошибок из-за специфического синтаксиса gcc?
Я пишу некоторый код, который использует вычисленное goto. Проверка синтаксиса помечает каждый экземпляр goto *ptr а также &&label как синтаксическая ошибка. Есть ли способ остановить это? Добавление по алку: Пример для вычисленного gotos (р…
20 сен '12 в 10:01
2
ответа
Простая программа на С ++ получает ошибки компиляции
Когда я пытаюсь скомпилировать этот код, он показывает ошибку: main.cpp:19:3: error: invalid operands of types 'void' and 'int' to binary 'operator!=' Это файл: #include <iostream> #include <cstdio> using namespace std; #define $ DEBUG #…
21 мар '15 в 08:12
1
ответ
Почему GCC не поддерживает назначение троичного расширения?
GCC имеет отличное расширение троичных выражений для C, которое позволяет нам создавать такие выражения: int x = some_var ?: 10; // expands to some_var ? some_var : 10 Что действительно хорошо, и хотя это не особенно интуитивно понятно, оно работает…
04 июн '13 в 18:57
0
ответов
Ошибка: ожидается '=', ',', ';', 'asm' или '__attribute__' перед 'g_11' при использовании комплексного расширения GNU
Я знаю, что есть много похожих вопросов к вышеуказанному, но я сталкиваюсь с ошибкой при добавлении сложного расширения GNU к простой базе кода рядом с объявленной глобальной переменной. /* * This is a RANDOMLY GENERATED PROGRAM. * * Generator: csmi…
27 сен '18 в 18:06
0
ответов
Неиспользованный атрибут игнорируется [-Wattributes]
У меня есть пример программы, где используется расширение GCC: struct s { int x __attribute__((unused)); }; который при компиляции выдает предупреждение warning: ‘unused’ attribute ignored [-Wattributes] int x __attribute__((unused)) ; что это значи…
16 ноя '18 в 05:31
2
ответа
Невозможно понять следующее объявление функции
Кто-нибудь может объяснить следующее объявление функции. inline uint64_t MY_FUNC(unsigned long param) __attribute__ ((pure, always_inline));
19 дек '14 в 13:14
2
ответа
GCC - изменить, где выполнение продолжается после возврата функции
Можно ли сделать что-то подобное в GCC? void foo() { if (something()) returnSomewhereElse; else return; } void bar() { foo(); return; // something failed, no point of continuing somewhereElse: // execution resumes here if something succeeds // ... }…
22 ноя '15 в 11:02
1
ответ
В G++ 4.8 typeof по-прежнему нельзя использовать с "::"
Следующий код не компилируется под G++ 4.8 #include <vector> using namespace std; int main() { vector<int> v; typeof(v)::iterator it; } Если я заменю typeof на decltype, он работает нормально. Я знаю об обходном пути со структурой шаблон…
17 апр '14 в 19:43
2
ответа
Объявление переменной в функции, возвращающей спецификатор типа C++type
Я пробовал codefights.com и заметил, что кто-то ответил на вопрос, который включал в себя передачу всех самых длинных строк в векторе: std::vector<std::string> r, allLongestStrings(std::vector<std::string> a) { int b=0; for (s:a) if (s.s…
17 апр '17 в 06:53
2
ответа
Ошибка: "невозможно связать упакованное поле" при вставке данных в std::map с помощью функции вставки
Может кто-нибудь сказать мне разницу между #pragma pack(push,1) а также __attribute__((packed))? Я получаю ошибку компиляции, если я использую второй тип упаковки структуры, который говорит cannot bind packed field ‘ABC.abc::a’ to ‘unsigned int&…
26 ноя '18 в 12:58
2
ответа
Являются ли блоки кода внутри скобок в C/C++ допустимыми и может ли MSCL скомпилировать их?
У меня есть следующий код: int x; x = ({ 1; 2; 3; }); printf("%d\n", x); // should be 3 (Если вам любопытно, почему я когда-либо писал бы такой отвратительный код. Ответ таков: я не пишу. Я пишу генератор, который выводит код на языке C, и наличие т…
26 дек '15 в 22:52
6
ответов
Как передать VLA в шаблон функции?
У меня есть следующий код, который не может быть соблюден. using namespace std; void f(int); template<typename T1, size_t N> void array_ini_1d(T1 (&x)[N]) { for (int i = 0; i < N; i++) { x[i] = 0; } } Как правильно передать массив, если…
13 фев '14 в 07:36
1
ответ
Что это за синтаксис "[0 ... 255] =" в C?
Ссылаясь на js0n.c Синтаксис кода следующий: static void *gostruct[] = { [0 ... 255] = &&l_bad, ['\t'] = &&l_loop, [' '] = &&l_loop, ['\r'] = &&l_loop, ['\n'] = &&l_loop, ['"'] = &&l_qup, [':'] = &…
22 май '15 в 04:51
1
ответ
Используйте расширения gcc в окнах кодовых блоков
Я хочу знать, возможно ли использовать расширения gcc в кодовых блоках, таких как typeof в среде Windows. Код ниже предназначен только для того, чтобы показать пример того, как я хочу использовать typeof. #include <stdio.h> #include <stdlib…
10 дек '13 в 00:58
3
ответа
Как вернуть VLA с разным размером для каждого экземпляра функции?
Я использую хорошие расширения GCC, которые позволяют нам объявлять VLA внутри структур. На данный момент я нашел способ передать VLA в функции (по значению) таким образом. Я также нахожу способ вернуть один, но в очень ограниченном контексте. Функц…
04 мар '16 в 21:51
2
ответа
GCC typeof extension
Я не понимаю, почему это работает: /* gcc range extension */ __extension__ static int fn(int n) { switch (n) { case 0: return 0; case 1 ... 1000: return 1; default: return -1; } } Но это не так: /* gcc typeof extension */ __extension__ static void f…
17 янв '13 в 12:06
0
ответов
Заявления-выражения GCC - какова их история по сравнению со стандартами C?
С gccследующее является допустимым оператором C: foo ({bar(1); baz = 2;}) Что эквивалентно bar(1); baz = 2; foo(2); Отредактировано: вот мои (надеюсь, более информативные) вопросы: Был ли комитет / орган по стандартизации ISO C ходатайствовал о том,…
12 ноя '15 в 15:38
4
ответа
Что такое "..." в switch-case в коде C
Вот кусок кода в /usr/src/linux-3.10.10-1-ARCH/include/linux/printk.h: static inline int printk_get_level(const char *buffer) { if (buffer[0] == KERN_SOH_ASCII && buffer[1]) { switch (buffer[1]) { case '0' ... '7': case 'd': /* KERN_DEFAULT …
17 сен '13 в 15:10