Результаты поиска по запросу "c-preprocessor"

6 ответов

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

ли написать определение с пробелами, такими как: #define replace to replacement hereХочу заменитьзаменить на" с участием "замена здесь». РЕДАКТИРОВАТЬ: Я хочу протестировать частных участников: Я написал #define private publicно это не ...

3 ответа

 может использоваться как своего рода GDB для создания шаблонов. Это (насколько я знаю) основано на инструментах Clang.

правильно отлаживать сложные макросы в C ++, я обычно запускаю на них препроцессор, чтобы точно увидеть, как выглядит результирующий код. Есть ли аналогичный способ «предварительной обработки» кода шаблона?

2 ответа

Форвардные объявления в основном предназначены для того, чтобы избежать циклического импорта, когда один файл импортирует другой файл, который импортирует первый файл и т. Д. В основном, когда вы импортируете файл, содержимое файла заменяется в точке импорта, когда вы строите свой проект, который затем подается компилятору. Если у вас есть циклический импорт, у вас будет бесконечный цикл, который никогда не будет компилироваться. К счастью, xcode расскажет вам об этом перед попыткой. В предварительном объявлении говорится: «Не импортируйте этот класс, а просто знайте, что он существует». Без импорта или прямого объявления вы получите ошибку, что такого класса не существует.

у многофакторное приложение, которое использует класс под названиемRootViewController переключаться между представлениями. В моемMyAppDelegate заголовок, я создаю экземплярRootViewController называетсяrootViewController, Я видел примеры таких ...

ТОП публикаций

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' Вместо этого я хочу, ...

5 ответов

Макрос и функция с тем же именем

У меня есть следующий код #define myfunc(a,b) myfunc(do_a(a), do_b(b)) void myfunc(int a, int b) { do_blah(a,b); } int main() { int x = 6, y = 7; myfunc(x,y); return 0; }Я хочу, чтобы препроцессор расширял функцию myfunc только при вызове. ...

3 ответа

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

я есть один файл .cpp, который включает в себя несколько файлов заголовков. Эти заголовочные файлы могут включать и другие заголовочные файлы. Включены защитные устройства для предотвращения включения одного и того же файла дважды. Зная, что ...

0 ответов

Нет особой причины, по которой содержимое строки должно быть допустимым выражением Си. Если вы хотите сделать это, я советую дать ему другое имя, например STRINGIZE_EXPR.

#define STR1 "s" #define STR2 "1" #define STR3 STR1 ## STR2 ли объединить STR3 == "s1"? Вы можете сделать это, передав аргументы в другую функцию Macro. Но есть ли прямой путь?

5 ответов

Почему препроцессор C интерпретирует слово «linux» как константу «1»?

Почему препроцессор C в GCC интерпретирует словоlinux (маленькие буквы) как константа1? test.c: #include <stdio.h> int main(void) { int linux = 5; return 0; }Результат$ gcc -E test.c (остановка после этапа предварительной обработки): .... int ...

4 ответа

Что означает ## для препроцессора C (C ++)?

у меня естьCПрограмма ниже: #define f(g,g2) g##g2 main() { int var12=100; printf("%d",f(var,12)); }когда я запускаю только препроцессор, он расширяет это как { int var12=100; printf("%d",var12); }что является причиной, почему выход составляет ...

2 ответа

Правильный способ определения NULL и NULL_POINTER?

Насколько мне известно,CопределяетNULL нравится: #define NULL ( (void *) 0)Тогда как мы должны определитьNULL_POINTER ? Я определил это в своей программе, и это сработало, но я полагаю, это просто совпадение: #define NULL_POINTER ( (void *) ...