Лучшие c-preprocessor вопросы ИТ разработчиков

  • 7 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

Преимущества условно-препроцессора перед условными выражениями

Я никогда не работал с#если,#ifdef,#ifndef,#else,#elif а также#endif.Когда я просматривал некоторые исходные коды, я нашел широкое применение этих директив. ...

Задан 09 Jun 2013, 05:00 от ikis
  • 6 голосов
  • 6 ответов
  • 0 просмотров
6 ответов

#Define VS Variable

Я не могу понять, в чем разница между:

Задан 29 Nov 2015, 14:28 от Brian Tompsett - 汤莱恩Rrjrjtlokrthjji
  • 14 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Препроцессор C Literal Construction

Моя проблема заключается в следующем: У меня есть строковый литерал, который макрос-как #define TITLE "Title"Но бывают случаи, когда мне нужно передать широкий символьный вариант этой строки. Я хочу быть в состоянии пройтиL"Title" к ...

Задан 07 Nov 2012, 17:32 от StoryTeller
  • 11 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

 работает только с расширением GNU. Вы знаете, как решить эту проблему для C99?

трюк для создания вариационного макросаFOO(a1, a2, a3,..., an) так что он расширяется доFOOn(a1, a2, a3,..., an) для значенийn в каком заранее выбранном ограниченном диапазоне вы выбираете? Это,FOO(a) следует расширить доFOO1(a), FOO(a, b, c) ...

Задан 19 Mar 2011, 22:44 от R..
  • 12 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Как определить -stdlib = libc ++ в препроцессоре?

Я думаю, что это является частью проблемы вНет типа с именем «unique_ptr» в пространстве имен «std» при компиляции в LLVM / Clang. По словам Маршалла КлоуЯ м...

Задан 27 Jul 2015, 15:44 от jww
  • 5 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Макрос «с» в Си

Я искал макрос, который будет напоминать конструкцию with. Использование должно быть что-то вроде: with (lock(&x), unlock(&x)) { ... }Это может быть полезно для некоторых других целей. Я придумал этот макрос: #define __with(_onenter, _onexit, ...

Задан 24 Apr 2013, 16:59 от Elazar
  • 7 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Как препроцессор вставить разрыв строки в результат раскрытия макроса? [Дубликат]

На этот вопрос уже есть ответ: Как создать новую строку в макросе cpp? [/questions/98944/how-to-generate-a-newline-in-a-cpp-macro] 7 ответов С макросами C / C ++ довольно просто автоматически генерировать длинные конструкции. Например, если я ...

Задан 22 Jan 2010, 09:08 от sharptooth
  • 6 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Действительно, я проверял это и с людьми на работе. Очевидно, что GCC со вкусом PS3 не будет расширять макрос должным образом, если между оператором и операндами не будет пробелов.

у это не работает? 0. #define CONCAT(x, y) x ## y 1. 2. #define VAR_LINE(x) \ 3. int CONCAT(_anonymous, __LINE__) = x 4. 5. #define VAR_LINE2(x) \ 6. int _anonymous ## x = 1 7. 8. int main() 9. { 10. VAR_LINE(1); 11. VAR_LINE(1); ...

Задан 20 Jan 2009, 12:13 от John Leidegren
  • 145 голосов
  • 16 ответов
  • 0 просмотров
16 ответов

Как проверить ОС с помощью директивы препроцессора?

Мне нужен мой код, чтобы делать разные вещи в зависимости от операционной системы, в которой он компилируется. Я'ищу что-то вроде этого:

Задан 26 Sep 2008, 21:44 от perimosocordiae
  • 9 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

Я исправил неправильно определенный макрос. Добавлен еще один набор круглых скобок.

чаю C, но я не понимаю этого: #define square(x) x*x a = square(2+3) //a = 11Когда это запускается, почемуa в конечном итоге11?

Задан 27 Apr 2011, 16:01 от jhon
  • 701 голос
  • 11 ответов
  • 0 просмотров
11 ответов

Зачем использовать явно бессмысленные операторы do-while и if-else в макросах?

Во многих макросах C / C ++ я вижу код макроса, заключенный в то, что кажется бессмысленнымdo while петля. Вот примеры. #define FOO(X) do { f(X); g(X); } while (0) #define FOO(X) if (1) { f(X); g(X); } elseЯ не вижу чтоdo while делается. Почему ...

Задан 30 Sep 2008, 17:36 от jfm3
  • 28 голосов
  • 6 ответов
  • 0 просмотров
6 ответов

 просто не нужно, так как вы не создаете новый идентификатор. Фактически, компилятор выдает «error: paste». », А« variable »не дает действительный токен предварительной обработки»

значает эта строка? Особенно, что делает## значит? #define ANALYZE(variable, flag) ((Something.##variable) & (flag))Редактировать: Немного смущен до сих пор. Без чего будет результат##?

Задан 28 Jun 2011, 08:21 от Dante is not a Geek
  • 159 голосов
  • 30 ответов
  • 0 просмотров
30 ответов

Когда полезны макросы C ++? [закрыто]

CСообщество C ++ вполне обоснованно опасается препроцессора. Встроенные функции, константы и шаблоны обычно являются более безопасной и превосходной альтернативой#define. Следующий макрос: #define SUCCEEDED(hr) ((HRESULT)(hr) >= 0)ни в коем ...

Задан 18 Sep 2008, 19:46 от 8 revs, 4 users 75%
  • 11 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

Как заставить чувствительность к регистру препроцессора Visual Studio с помощью #include?

Если у вас есть файл заголовка с именем ThisIsAHeaderFile.h, следующий файл все равно найдет этот файл в Visual Studio:

Задан 05 Jun 2016, 12:27 от Brian Tompsett - 汤莱恩Nick McCowin
  • 47 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Что особенного в R и L в препроцессоре C ++?

Я выполнил следующий код через препроцессор Visual Studio 2013. Результат меня удивляет. Содержимое hello.cpp: #define A(j) #j A(A?) A(B?) A(C?) A(D?) A(E?) A(F?) A(G?) A(H?) A(I?) A(J?) A(K?) A(L?) A(M?) A(N?) A(O?) A(P?) A(Q?) A(R?) A(S?) ...

Задан 13 Jan 2014, 18:19 от user52875
  • -3 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

При достаточной тяге свиньи летают просто отлично

аюсь выполнить следующий код: #define channel1 10 #define channel(id) channel##id int main(){ int id = 1; cout << channel(id)<<"\n"; return 0; }Я получаю следующую ошибку:error: use of undeclared identifier 'channelid' Вместо этого я хочу, ...

Задан 10 Sep 2018, 16:56 от Shubham Agrawal
  • 5 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Кодовый блок отладки препроцессора

Я пишу программу на C ++ с Codeblocks, и для целей отладки мне нужно знать, установлено ли для Building-Target Codeblocks значение «DEBUG» или «RELEASE». Я уже попробовал это: #ifdef DEBUG printf("Debug-Message"); #endifи это #ifdef _DEBUG ...

Задан 20 Oct 2012, 10:48 от maja
  • 5 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

).

я есть код, который содержит много сложных кодов ошибок #define, которые нелегко декодировать, поскольку они вложены в несколько уровней. Есть ли какой-нибудь элегантный способ получить список #defines с их окончательными числовыми значениями ...

Задан 30 Dec 2010, 17:46 от djs
  • 48 голосов
  • 11 ответов
  • 0 просмотров
11 ответов

Почему в C # нет макросов?

Когда я впервые изучал C #, я был удивлен, что у них не было поддержки макросов в той же емкости, которая существует в C / C ++. Я понимаю, что ключевое слово #define существует в C #, но его очень не хватает по сравнению с тем, что я полюбил в C ...

Задан 02 Sep 2009, 19:45 от Andrew Garrison
  • 1 голос
  • 2 ответа
  • 0 просмотров
2 ответа

Конкатенация препроцессора для пути включения

У меня есть набор включений, которые находятся в удаленном каталоге, что означает, что для их включения требуется длинное включение, например: #include "../../Path/to/my/file.h"Если у меня их несколько, это становится немного неудобно, поэтому я ...

Задан 11 Dec 2013, 16:24 от Toby
  • 31 голос
  • 4 ответа
  • 0 просмотров
4 ответа

Объяснение небезопасного макроса C ++ FAQ?

Согласно C ++ FAQ, макросы - это зло:[9.5] Почему я должен использовать встроенные функции вместо простых старых макросов #define?Так как

Задан 26 Apr 2013, 17:03 от Gaurav K
  • 2 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Что такое WINAPI_FAMILY_ONECORE_APP?

Я просматривал порт Microsoft OpenSSL на GitHub. Один коммит попался на глаза, и это былоДобавление поддержки Win10 Universal Platform, В коммите, раздел наз...

Задан 10 Jul 2016, 04:37 от jww
  • 8 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Что означает «_IO (…)» в заголовках C в Linux?

У меня есть стандартный заголовочный файл Linux, например /usr/src/linux-headers-3.2.0-35/include/linux/usbdevice_fs.hкоторые содержатdefine заявления следующим образом: #define USBDEVFS_SUBMITURB32 _IOR('U', 10, struct usbdevfs_urb32) ...

Задан 31 Jan 2013, 13:26 от Alex
  • 16 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

 иметь приоритет над

стандартный документимеет следующий пример в разделе, связанном с оператором предварительной обработки ##: [http://www.open-std.org/JTC1/sc22/wg14/www/docs/n1124.pdf]В следующем фрагменте: Расширение производит на разных этапах: #define ...

Задан 06 Jul 2011, 10:41 от deStrangis
  • 9 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

 где-то вариадические макросы.)

ли способ в стандартном C - или с расширениями GNU - добавить материал к определению макроса?Например., учитывая макрос, определенный как #define List foo bar могу ли я добавитьbas так что этоList расширяется, как будто я определил это #define ...

Задан 28 Dec 2010, 22:34 от J. C. Salomon
  • 37 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

Могу ли я переопределить макрос C ++ и определить его обратно?

Я использую библиотеку JUCE и несколько заголовков Boost в своем коде. Juce определяет «T» как макрос (стон), а Boost часто использует «T» в определениях шаблонов. В результате, если вы каким-либо образом включите заголовки JUCE перед заголовками ...

Задан 24 Nov 2009, 23:56 от Aftermathew
  • 14 голосов
  • 4 ответа
  • 0 просмотров
4 ответа

C найти статический размер массива (исключая ошибки) [duplicate]

На этот вопрос уже есть ответ: Макрос размером с массив, который отклоняет указатели [/questions/19452971/array-size-macro-that-rejects-pointers] 9 ответов Определение размера статического массива - обычная операция. видеть:C найти статический ...

Задан 28 Apr 2015, 16:18 от ideasman42
  • 33 голосов
  • 4 ответа
  • 0 просмотров
4 ответа

Идентификатор _ _ VA_ARGS _ _ должен присутствовать только в списке замены функционально-подобного макроса, который использует многоточие в параметрах.

тладочных сборок я обычно использую Clang, так как он лучше форматирует предупреждения и ошибки и немного облегчает их отслеживание и исправление. Но недавно после добавления макроса с переменными аргументами Кланг сказал мне следующее (из ...

Задан 24 Jan 2011, 20:12 от user350814
  • 278 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

Во всяком случае, я нашел таблицы довольно информативными и решил поделиться здесь.

есть некоторый кроссплатформенный код C / C ++, который должен быть скомпилирован на Mac OS X, iOS, Linux, Windows, как я могу надежно их обнаружить во время процесса препроцессора?

Задан 07 May 2011, 08:37 от Eonil
  • 0 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

выход препроцессора cpp не в состоянии понять?

Извините, если мой вопрос очень простой. Я хотел бы понять вывод, производимый препроцессором CPP. Допустим, у меня есть очень простая следующая программа. #include <stdio.h> #include <stdlib.h> int x=100; int main () { printf ...

Задан 02 Mar 2012, 14:20 от Whoami
  • 5 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

Макросы C неявно приводятся?

Я искал SO, но не нашел ответа на эти конкретные вопросы. Прости меня, если на него уже ответили.Если у вас есть следующее:

Задан 10 Jun 2014, 17:16 от RoraΖ
  • 57 голосов
  • 6 ответов
  • 0 просмотров
6 ответов

Как вы упомянули, невозможно иметь #ifdef в #define. Вместо этого вы должны изменить порядок:

аюсь написать что-то вроде этого: #define COV_ON(x) \ #ifdef COVERAGE_TOOL \ _Pragma (COVERAGE #x) #endifЕсть ли способ определитьCOV_ON нравится? Я знаю, что я сделал выше, неправильно, так как я не могу иметь#ifdef внутри #define. (# ...

Задан 07 Apr 2011, 19:22 от agent.smith
  • 12 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Нет .. вывод правильный ..

#define до конца файла. Но откуда это началось. В основном я попробовал следующий код. #include<stdio.h> #include<stdlib.h> #define pi 3.14 void fun(); int main() { printf("%f \n",pi); #define pi 3.141516 fun(); return 0; } void ...

Задан 16 Jun 2011, 22:49 от Rohit Jain
  • 2 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

Что означает «##» в макросе C ++? [Дубликат]

На этот вопрос уже есть ответ здесь:Какие приложения оператора ## препроцессора и ошибки должны быть рассмотрены? 13 ответовОператор ## в C 7 ответовКакие&#3...

Задан 03 Aug 2013, 07:18 от Best Water
  • 63 голосов
  • 6 ответов
  • 0 просмотров
6 ответов

https://github.com/whunmr/msgrpc

ько что узнал оX-макросы [http://en.wikibooks.org/wiki/C_Programming/Preprocessor#X-Macros], Какие реальные применения X-Macros вы видели? Когда они являются правильным инструментом для работы?

Задан 09 Jul 2011, 15:56 от Agnius Vasiliauskas
  • 11 голосов
  • 7 ответов
  • 0 просмотров
7 ответов

Предварительно скомпилированные заголовки? Нужны ли они нам?

Давным-давно я использовал предварительно скомпилированные заголовки: a. ускорить компиляцию и б. потому что я поддерживал несколько инструментов разработки,...

Задан 05 Jun 2016, 13:09 от Brian Tompsett - 汤莱恩
  • 4 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

Условный #include в C

Есть ли способ сделать условное включение с препроцессором c? У меня есть "библиотека" инструментов (Tools.c, Tools.h), совместно используемых различными ко...

Задан 07 Sep 2012, 09:09 от Oliver
Page 1 of 8
1 2 3 4 5