Вопросы по теме 'c-preprocessor'

Необязательный инициализатор с помощью обмана препроцессора?
Я знаю, что это не сработает, но, надеюсь, вы видите, что я пытаюсь сделать. #if ASSIGN_ALLOWED #define MAYBE_SKIP_REST_OF_LINE #else #define MAYBE_SKIP_REST_OF_LINE ; // #endif char str[80] MAYBE_SKIP_REST_OF_LINE = "Hello\n"; long...
184 просмотров
schedule 22.08.2022

Дилемма препроцессора, дружественного к Javascript
Я работаю над (почти законченным) проектом Javascript уже чуть более 14 месяцев. Проект начался как хак, который я рассчитывал закончить за одну ночь, но со временем часть Javascript выросла до 68 отдельных файлов и 10 314 непустых строк, которые, к...
2333 просмотров
schedule 29.07.2022

Как я могу гарантировать полное раскрытие макроса параметра перед вставкой?
У меня есть общий макрос: #define mSwitch( Root, Case ) Root##_Case_##Case #define mSpecialDisplay( what, Val ) mSwitch(mSpecialDisplay,what)(Val) #define mSpecialDisplay_Case_Int(Val) ...do stuff #define mSpecialDisplay_Case_Float(Val)...
4593 просмотров
schedule 12.12.2023

Вызов макроса C++ с меньшим количеством аргументов
Можно ли вызывать макросы, подобные функциям, с меньшими параметрами в Linux? На самом деле это только генерирует предупреждение в Visual Studio (предупреждение 4003), а неназначенные переменные заменяются на «». Но компиляция его с помощью g++...
831 просмотров
schedule 01.11.2022

Макросы и шаблоны препроцессора констант C ++
Скажем, у меня есть следующий очень простой макрос и небольшой код для его вывода: #define SIMPLEHASH(STRING) STRING[1] + STRING[2] + STRING[3] std::cout << SIMPLEHASH("Blah"); Это выводит 309, и если вы просмотрите сборку, вы увидите:...
1804 просмотров
schedule 27.10.2023

Попала ли `#pragma once` в C ++ 0x?
Название говорит само за себя. #pragma once были стандартизированы для C ++ 0x? Я не знаю компилятора, который бы не реализовал его, почти всегда с той же семантикой и именем.
2947 просмотров
schedule 28.08.2022

ctags забивает исходный файл с несбалансированными фигурными скобками из-за #ifdef
Я использую ctags для создания файла tags для проекта C, над которым я работаю, но в файле отсутствуют многие функции. Похоже, это вызвано несбалансированными фигурными скобками в исходных файлах из-за использования #ifdef . (упрощенный)...
1120 просмотров
schedule 09.08.2022

Макродирективы в C, мой пример кода не работает
Я хочу, чтобы следующий кусок кода работал: #define READIN(a, b) if(scanf('"#%d"', '"&a"') != 1) { printf("ERROR"); return EXIT_FAILURE; } int main(void) { unsigned int stack_size; printf("Type in size: "); READIN(d, stack_size);...
244 просмотров
schedule 27.02.2024

Как расширить MACRO в NSString без использования конкатенации строк во время выполнения?
Я определил макрос MYMACRO. Примечание. значение не является допустимым NSString. #define MYMACRO is Макрос используется внутри объявления NSString @"This MYMACRO fun" Однако препроцессор не расширяет макрос. Предварительно...
2639 просмотров

Законно ли переопределять ключевое слово C ++?
В этой статье от Гуру недели говорится: It is illegal to #define a reserved word. Это правда? Я не могу найти ничего в норме, и, например, я уже видел, как программисты переопределяют новое.
5688 просмотров
schedule 15.09.2022

Альтернативы использованию #define в С++? Почему это осуждается?
Я занимаюсь разработкой C++ меньше года, но за это время я слышал, как несколько человек говорят о том, насколько ужасен #define . Теперь я понимаю, что он интерпретируется препроцессором, а не компилятором, и поэтому не может быть отлажен, но так...
13841 просмотров

Препроцессор C ++: избегайте повторения кода списка переменных-членов
У меня есть несколько классов, каждый с разными переменными-членами, которые тривиально инициализируются в конструкторе. Вот пример: struct Person { Person(const char *name, int age) : name(name), age(age) { }...
32179 просмотров
schedule 11.10.2023

Отступ директив препроцессора в Visual C++ 2010
Я часто оказываюсь в ситуациях, когда я хотел бы сделать отступ директив препроцессора, как и остальной код (например, #if с отступом как if ). Это кажется законным , это здравый смысл в том, что иногда это хорошо , но Visual не сделает это...
3532 просмотров

Конкатенация препроцессора C с переменной
Возможное дублирование: Препроцессор C и конкатенация Можно ли связать препроцессор C с именем переменной? #define WIDTH 32 int dataWIDTH; // dataWIDTH should be interpreted as 'data32' printf("%d",dataWIDTH);
8963 просмотров
schedule 24.10.2023

Утверждение, что литералы значений не имеют типа, ложно?
Я читал в темах, статьях и ответах SO, что значения #define не имеют типа, я решил об этой концепции, думая, что тип является свойством переменной контейнера, а не свойством самого значения: const char cVALUE = 100; // 'cVALUE' is char with...
400 просмотров
schedule 23.01.2024

алгоритм генерации таблицы поиска обратных битов (8 бит)
Я нашел таблицу поиска здесь. Таблица создается как таблица обратных битов. из 8 бит. Я не могу понять, почему это работает. Пожалуйста, объясните теорию, стоящую за этим. Спасибо static const unsigned char BitReverseTable256[256] = { #...
3268 просмотров

Многострочные комментарии и новые строки
В С++ 11 стандарт говорит в 2.2.3: Каждый комментарий заменяется одним пробелом. Символы новой строки сохраняются. Является ли эта фраза последовательной, что означает сохранение новой строки для комментария, который заканчивается...
617 просмотров
schedule 17.01.2024

Преобразование директив C/C++ #if и #elif в C#
Я пытаюсь программно преобразовать код C /C++ в C#. Я столкнулся с проблемой при преобразовании директив препроцессора, особенно с #if и #elif , поскольку препроцессор для C /C++ принимает больше условий. Таким образом, это не будет...
310 просмотров

Объем макросов в C?
Как оцениваются эти макросы? # define i 20 void fun(); int main(){ printf("%d",i); fun(); printf("%d",i); return 0; } void fun(){ #undef i #define i 30 } дает результат как 2020, но тогда как, # define i 20 void fun(){...
10165 просмотров
schedule 04.10.2023

Что означают предварительно обработанные строки вывода gcc в виде знака хэша + цифры № 1?
Делая отчет об ошибке для компилятора CUDA, я обнаружил это странное поведение на этапе предварительной обработки gcc. В настоящее время я использую gcc 4.8.2. Тестовый файл: test.cpp #include <assert.h> int main() { int a = 1;...
771 просмотров
schedule 22.10.2023