c-preprocessor- все статьи тега


область действия директивы препроцессора c#

Я ищу, чтобы использовать: #define И #if Чтобы я мог моделировать потенциально отсутствующее оборудование во время модульных тестов. Каковы правила использования операторов #define? То есть какова его область по умолчанию? могу ли я изменить область действия директивы? ...

Что сделало бы макросы препроцессора C++ приемлемым инструментом разработки?

По-видимому макросы препроцессора в C++ являются Оправданно боится и избегает сообщество C++. Однако есть несколько случаев, когда макросы C++ полезны. Видя в качестве препроцессора макросы могут быть чрезвычайно полезны и могут сократить повторяющийся код очень простым способом -- -- оставляет меня с вопросом, что именно делает макросы препроцессора "злыми", или, как название вопроса говорит, какая функция ( или удаление функции) была бы необходима из макросов препроцессора, чтобы ...

Как настроить Xcodes "debug / release target settings"?

Я нашел здесь множество замечательных макросов Objective C Macros Ставлю свои: #if DEBUG==1 #define .... macros В моем заголовочном файле. Теперь я просто не могу понять, где установить DEBUG=1 или DEBUG=0 в Xcode, чтобы он будет определять макрос при отладке, а не при выпуске. Надеюсь, кто-нибудь поможет мне найти недостающее выпадающее меню:) ...

Зачем использовать явно бессмысленные операторы 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 делает. Почему бы просто не написать это без него? #define FOO(X) f(X); g(X) ...

Объединение C++ и C-как работает #ifdef cplusplus?

Я работаю над проектом, который имеет большое наследие C код. Мы начали писать на C++, с намерением в конечном итоге преобразовать унаследованный код. Я немного смущен тем, как C и C++ взаимодействовать. Я понимаю, что, обернув C код extern "C" компилятор C++ не будет калечить C имена кода, но я не совсем уверен, как это реализовать. Итак, в верхней части каждого C заголовочный файл (после включения ГВ), у нас есть #ifdef __cplusplus extern "C" { #endif а внизу мы пишем #ifdef __cplusplu ...

Мин и Макс в C

где MIN и MAX определяется в C, если вообще? каков наилучший способ реализовать их, как можно более обобщенно и безопасно? (Предпочтительны расширения компилятора/встроенные файлы для основных компиляторов.) ...

C #определение макроса для отладки печати

попытка создать макрос, который можно использовать для печати отладочных сообщений при определении отладки, например, следующий псевдокод: #define DEBUG 1 #define debug_print(args ...) if (DEBUG) fprintf(stderr, args) Как это достигается с помощью макроса? ...

# pragma pack эффект

мне было интересно, может ли кто-нибудь объяснить мне, что такое #pragma pack оператор препроцессора делает, и что более важно, почему его нужно использовать. Я проверил страница MSDN, который предложил некоторое представление, но я надеялся услышать от людей с опытом. Я видел это в коде раньше, хотя я больше не могу найти, где. ...

Как сделать вариативный макрос (переменное количество аргументов)

Я хочу написать макрос в C, который принимает любое количество параметров, а не конкретное число пример: #define macro( X ) something_complicated( whatever( X ) ) здесь X - это любое количество параметров мне это нужно, потому что whatever перегружен и может быть вызван с 2 или 4 параметрами. Я попытался определить макрос дважды,но второе определение переписало первое! компилятор, с которым я работаю, - это g++ (более конкретно, mingw) ...

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

The C препроцессор справедливо боится и избегает сообщества C++. Встроенные функции, запоры и шаблоны обычно являются более безопасной и превосходной альтернативой a #define. следующий макрос: #define SUCCEEDED(hr) ((HRESULT)(hr) >= 0) никоим образом не превосходит тип сейфа: inline bool succeeded(int hr) { return hr >= 0; } но макросы имеют свое место, пожалуйста, перечислите использование вы найдете для макросов, которые вы не могу обойтись без препроцессора. пожалуйста помес ...

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

Мне нужен мой код, чтобы делать разные вещи, основанные на операционной системе, на которой он компилируется. Я ищу что-то вроде этого: #ifdef OSisWindows // do Windows-specific stuff #else // do Unix-specific stuff #endif есть ли способ сделать это? Есть ли лучший способ сделать то же самое? ...

Как определить платформу / компилятор из макросов препроцессора?

Я пишу кросс-платформенный код, который должен компилироваться в linux, windows, Mac OS. В windows я должен поддерживать visual studio и mingw. есть некоторые части специфичного для платформы кода, которые я должен поместить в #ifdef .. #endif окружающая среда. Например, здесь я разместил специфический код win32: #ifdef WIN32 #include <windows.h> #endif но как я узнаю linux и mac OS? То, что определяет имена (или т. д.) Я должен использовать? ...

#ifdef vs #if-что лучше / безопаснее в качестве метода включения / отключения компиляции определенных разделов кода?

это может быть вопрос стиля, но в нашей команде разработчиков есть небольшой разрыв, и мне было интересно, есть ли у кого-нибудь еще идеи по этому вопросу... в принципе, у нас есть некоторые отладочные операторы печати, которые мы отключаем во время нормальной разработки. Лично я предпочитаю делать следующее: //---- SomeSourceFile.cpp ---- #define DEBUG_ENABLED (0) ... SomeFunction() { int someVariable = 5; #if(DEBUG_ENABLED) printf("Debugging: someVariable == %d", someVariable); # ...

C / C++ номер строки

в целях отладки, я могу получить номер строки C/C++ компиляторы? (стандартный способ или конкретные способы для определенных компиляторов) Эл.г if(!Logical) printf("Not logical value at line number %d n",LineNumber); // How to get LineNumber without writing it by my hand?(dynamic compilation) ...

Как я могу показать значение #define во время компиляции?

Я пытаюсь выяснить, какая версия Boost мой код думает, что он использует. Я хочу сделать что-то вроде этого: #error BOOST_VERSION но препроцессор не расширяет BOOST_VERSION. Я знаю, что могу распечатать его во время выполнения из программы, и я знаю, что могу посмотреть на вывод препроцессора, чтобы найти ответ. Я чувствую, что способ сделать это во время компиляции может быть полезным. ...

Макрос против функции в C

Я всегда видел примеры и случаи, когда использование макроса лучше, чем использование функции. может ли кто-нибудь объяснить мне на примере недостаток макроса по сравнению с функцией? ...

C++ препроцессор VA ARGS количество аргументов

простой вопрос, на который я не мог найти ответ в сети. В макросах переменных аргументов, как найти количество аргументов? Я в порядке с препроцессором boost, если у него есть решение. Если это имеет значение, я пытаюсь преобразовать переменное число аргументов макроса для повышения последовательности препроцессора, списка или массива для дальнейшей переработки. ...

Почему бы не объединить исходные файлы C перед компиляцией? [дубликат]

этот вопрос уже есть ответ здесь: #включить все .cpp файлы в один блок компиляции? 5 ответов преимущества / недостатки unity строит? [дубликат] 3 ответы Я пришел из фона сценариев, и препроцессор в C всегда казался мне уродливым. Тем не менее я принял его, как я учусь писать небольшие программы на Си. Я действительн ...

Можно ли #если директивы препроцессора вложены в C++?

у меня есть вопрос о директив препроцессора в c++: например: #ifndef QUESTION //some code here #ifndef QUESTION //some code here #endif #endif можем ли мы использовать его таким образом, и может ли компилятор C++ соответствовать ifndef и endif в правильном направлении? ...

#define в Java

Я начинаю программировать на Java и мне интересно, если эквивалент C++ . быстрый поиск google говорит, что это не так, но может ли кто-нибудь сказать мне, Существует ли что-то подобное на Яве? Я пытаюсь сделать мой код более читабельным. вместо myArray[0] Я хочу иметь возможность писать myArray[PROTEINS] например. ...