Область действия #define - до конца файла. Но с чего это начинается.
В основном я пробовал следующий код. #include #include #define pi 3.14 void fun (); ...
Почему следующий код работает не так, как ожидалось? void foobar (int); #ifndef foobar printf («foobar существует»);
#endif Сообщение выводится всегда; очевидно, он не может обнаружить наличие ...
#if sizeof (int)! = 4
/ * что-то сделать * / Использование sizeof внутри #if не работает, а внутри #define работает, почему? #define size (x) sizeof (x) / sizeof (x [0]) / * работает * /
Меня интересует, какое назначение различные платформы / компиляторы ("реализации") / фреймворки назначают C и макрос препроцессора C ++ NDEBUG. В стандарте C, а также в стандарте C ++ упоминается только ...
Я работаю с примитивным синтаксическим анализатором C, который не обрабатывает директиву препроцессора. Я могу без проблем предварительно обработать большую часть заголовка с помощью переключателя -E. В последнее время я обнаружил случаи, когда атрибут .
Как и в заголовке. Я хочу использовать макрос препроцессора в тексте оператора #error: #define SOME_MACRO 1 #if SOME_MACRO! = 0 #error "SOME_MACRO не было 0; это было [значение SOME_MACRO]" ...
Я занимаюсь программированием некоторое время, и кое-что я Я до сих пор так и не понял, когда именно нужно что-то # включать. Я знаю, что на всякий случай вы можете делать это всякий раз, когда что-то используете ...
Обратите внимание на этот код: #define F (x, ...) X = x и VA_ARGS = __VA_ARGS__
#define G (...) F (__ VA_ARGS__)
F (1, 2, 3)
G (1, 2, 3) Ожидаемый результат - X = 1 и VA_ARGS = 2, 3 для обоих макросов, и это ...
Мне было интересно, почему мы не можем использовать конкатенацию токенов вне определений. Это происходит, когда я хочу получить их одновременно: бесконфликтное именование в библиотеке (или для «обобщений») отладка; когда ...
В C99 у нас есть составные литералы, и их можно передавать функциям, как в: f ((int [2]) {1, 2}); Однако, если f не функция, а скорее функционально-подобный макрос, gcc блокирует это из-за ...
Если есть кроссплатформенный код C / C ++, который нужно скомпилировать в Mac OS X, iOS, Linux, Windows, как я могу надежно обнаружить их в процессе препроцессора?
Некоторое время назад я написал набор X-макросов для крупного проекта. Мне нужно было поддерживать согласованные списки как строк, так и перечисляемых ссылок / хеш-значений / функций обратного вызова и т. Д. Вот что…
Я хотел бы сгенерировать случайное число или строку с помощью препроцессора C ... гм ... Я даже не знаю, возможно ли это, но я пытаюсь создавать переменные на лету (строки могут быть полезны ...
Почему M (0) и N (0) дают разные результаты? #define CAT_I (a, b) a ## b
#define CAT(a, b) CAT_I(a, b) #define M_0 CAT(x, y)
#define M_1 whatever_else
#define M(a) CAT(M_, a)
M(0); // ...
Я наткнулся на этот пример утверждение, и мне было интересно, для чего нужен #: #define ASSERT (x) if (! (x)) {\ int * p = NULL; \ DBGPRINTF ("Ошибка утверждения: [% s] \ r \ n Остановка.", #X); \ ...
Обычно используются два разделителя пути: прямая косая черта Unix и обратная косая черта DOS. Покойся с миром, толстая кишка Classic Mac. Если они используются в директиве #include, равны ли они по правилам C ++ ...
Возможно ли реализовать strlen () в препроцессоре C? Дано: #define MYSTRING "bob" Есть некоторый макрос препроцессора X, который позволил бы мне сказать: #define MYSTRING_LEN X (MYSTRING)
Когда я выбираю " Отладка », константа DEBUG активна. Когда я выбираю конфигурацию «Release», константа DEBUG неактивна. Как я могу создать свои собственные конфигурации, чтобы они ...
Можно ли сделать что-то вроде этого: #define F (x) \ #ifdef DOUBLE \ 2 * x \ #else \ x \ #endif так что когда я использую F, то, до чего он расширяется, зависит от того, будет ли макрос ...
Думаю, большинство из вас, кто работал с C / C ++, интуитивно понимает, как работает препроцессор (более или менее). Я так думал до сегодняшнего дня, но моя интуиция не оправдалась. Вот история: Сегодня я ...
Мы знаем, что встроенные методы хороши, поскольку они проверяются компилятором, и одна и та же операция (например, ++ x) не оценивается более одного раза при передаче в качестве аргумента по сравнению с макросами. Но в ...
В При обсуждении возможностей дизайна для проекта, который имеет очень большое количество констант и битовых шаблонов, которые необходимо определить, возник вопрос о том, сколько #defines может обработать стандартный компилятор? . ..
Я пытаюсь сохранить строку md5 как переменную экземпляра класса вместо фактический пароль. У меня есть статическая функция, которая вернет строку md5, которую я пытаюсь сохранить в экземпляре ...
У меня есть код с множеством сложных кодов ошибок #define которые нелегко расшифровать, поскольку они имеют несколько уровней вложенности. Есть ли какой-нибудь элегантный способ получить список #define с помощью ...
Есть ли способ в стандартном C - или с расширениями GNU - добавить что-то в определение макроса? Например, учитывая макрос, определенный как
#define List foo bar
Могу ли я добавить bas, чтобы его список расширялся, как если бы я ...
Я использую, чтобы пройти через C-код с большим количеством директив #ifdef, #if и #endif, которые поддерживают некоторую часть активной, а некоторую часть неактивной в зависимости от того, определены некоторые переменные или нет. Я искал ...