Вопросы по теме '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 просмотров
schedule
03.11.2023
Законно ли переопределять ключевое слово C ++?
В этой статье от Гуру недели говорится: It is illegal to #define a reserved word. Это правда? Я не могу найти ничего в норме, и, например, я уже видел, как программисты переопределяют новое.
5688 просмотров
schedule
15.09.2022
Альтернативы использованию #define в С++? Почему это осуждается?
Я занимаюсь разработкой C++ меньше года, но за это время я слышал, как несколько человек говорят о том, насколько ужасен #define . Теперь я понимаю, что он интерпретируется препроцессором, а не компилятором, и поэтому не может быть отлажен, но так...
13841 просмотров
schedule
06.11.2023
Препроцессор 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 просмотров
schedule
02.10.2022
Конкатенация препроцессора 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 просмотров
schedule
23.10.2022
Многострочные комментарии и новые строки
В С++ 11 стандарт говорит в 2.2.3:
Каждый комментарий заменяется одним пробелом. Символы новой строки сохраняются.
Является ли эта фраза последовательной, что означает сохранение новой строки для комментария, который заканчивается...
617 просмотров
schedule
17.01.2024
Преобразование директив C/C++ #if и #elif в C#
Я пытаюсь программно преобразовать код C /C++ в C#. Я столкнулся с проблемой при преобразовании директив препроцессора, особенно с #if и #elif , поскольку препроцессор для C /C++ принимает больше условий. Таким образом, это не будет...
310 просмотров
schedule
22.11.2023
Объем макросов в 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