Результаты поиска по запросу "c-preprocessor"
Отличный ответ! Конечно, я многому научусь из этого. Спасибо!
приведен код hello.c: #include <stdio.h> int main (void) { printf ("Hello, world!\n"); return 0; }Я использовал командуgcc -E hello.c предварительно обработать его и получить следующий вывод: # 1 "hello.c" # 1 "<built-in>" # 1 "<command-line>" ...
Это не ответ на вопрос!
разница между макросом и функцией вC? Подскажите пожалуйста одно приложение, где я могу использовать макросы и функции?
Кроме того, отсутствие пространства имен препроцессора C означает, что такая система расширения макрокоманд не будет содержать. Нужно позаботиться о том, чтобы сгенерированные имена не мешали другим полезным макросам. В конце концов, вам, вероятно, не хватило бы памяти в препроцессоре для какого-либо значительного использования, поскольку препроцессор на самом деле не создан для хранения имени для каждого символа, преобразуемого в маркер «единицы», и имени для каждого «единичного» токена, сжимаемого в его окончательную десятичную запись.
жно ли реализоватьstrlen() вCпрепроцессор? Дано: #define MYSTRING "bob"Есть ли какой-то макрос препроцессора,Xчто позволило бы мне сказать: #define MYSTRING_LEN X(MYSTRING)
живой пример на wandbox.org
аюсь структурировать подстановку (оценку) конкатенации макросов. Например: #include <stdio.h> #define FOO_ONE 12 #define FOO_TWO 34 #define BAR_ONE 56 #define BAR_TWO 78 #define MAKE_MAC(mac) // ... what to do here? void main(int argc, char ...
это ключевое слово, а не макрос - его интерпретация не имеет ничего общего с препроцессором, поэтому не является исключением.
репроцессор, кажется, предполагает, что неопределенные константы равны 0 для оценки#if условия. Можно ли полагаться на это, или неопределенные константы дают неопределенное поведение?
суффикс к вашему исходному файлу, чтобы получить эту поддержку. MSVC долгое время не обновлял свой C-интерфейс.
отрим этот код: #define F(x, ...) X = x and VA_ARGS = __VA_ARGS__ #define G(...) F(__VA_ARGS__) F(1, 2, 3) G(1, 2, 3)Ожидаемый результатX = 1 and VA_ARGS = 2, 3 для обоих макросов, и это то, что я получаю с GCC, однако, MSVC расширяет это ...
Просто переименуйте их в рекурсивный
ли написать#define это определяет#define? Например: #define FID_STRS(x) #x #define FID_STRE(x) FID_STRS(x) #define FID_DECL(n, v) static int FIDN_##n = v;static const char *FIDS_##n = FID_STRE(v)Но вместо этого: #define FID_DECL2(n, v) ...
или так.
ел бы написать макрос препроцессора, который делает одну вещь, если его аргумент представляет собой набор токенов в скобках, например: MY_MACRO((x, y))и еще что-то, если это просто один токен, например: MY_MACRO(x)Это возможно? Как насчет ...
Обычный if или токен потока управления if проверяет условие с переменными или возвращаемыми значениями функции. Эта проверка выполняется во время выполнения.
разница между директивой препроцессора#if и нормальноif вC? Я новичок вC.