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

Как мне увидеть исходный файл C / C ++ после предварительной обработки в Visual Studio?
Допустим, у меня есть исходный файл со множеством директив препроцессора. Можно ли увидеть, как это будет выглядеть после того, как препроцессор с ним покончит?
96939 просмотров

C # определить макросы
Вот что у меня есть, и мне интересно, как это работает и что на самом деле делает. #define NUM 5 #define FTIMES(x)(x*5) int main(void) { int j = 1; printf("%d %d\n", FTIMES(j+5), FTIMES((j+5))); } Он производит два целых числа: 26 и...
905 просмотров
schedule 11.03.2022

Есть ли лекарство от синевы препроцессора?
Я знаю, что могу запустить препроцессор, чтобы он выдал результат с параметром -E в моих конкретных обстоятельствах. Для сгенерированного кода этот вывод препроцессора убийственен. Например, у меня есть приложение 4gl, и Informix преобразует его в...
2811 просмотров
schedule 15.01.2023

Как обеспечить соблюдение только одного определения?
Учитывая проект C , который должен поддерживать несколько сред, как мне использовать препроцессор, чтобы обеспечить определение только одной среды? Я уже умею: #if defined PROJA (blah blah blah) #elif defined PROJB (etc)...
226 просмотров
schedule 02.06.2023

Каково возможное использование #define для if (false) {} else для?
В другом вопросе я только что заметил эту маленькую жемчужину мудрости C : #define for if (false) {} else for что заставило MSVC выдать предупреждения о «постоянном выражении» для вполне допустимого оператора: for (int i = 0; i <= 10;...
8110 просмотров
schedule 09.05.2022

Макрос C: превратить число в строку
У меня есть таблица, определяющая внешний вид символов на дисплее с разрешением 5x7 точек. Что-то типа: extern UINT8 symbols[][5] = { {0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x5F,0x0,0x0}, {0x0,0x7,0x0,0x7,0x0},...
8258 просмотров
schedule 01.03.2023

Самые полезные пользовательские C-макросы (в GCC, также C99)?
Какой макрос C , по вашему мнению, наиболее полезен? Я нашел следующий, который использую для векторной арифметики в C : #define v3_op_v3(x, op, y, z) {z[0]=x[0] op y[0]; \ z[1]=x[1] op y[1]; \...
16214 просмотров
schedule 28.05.2024

#определить в Java
Я начинаю программировать на Java, и мне интересно, существует ли эквивалент C++ #define . Быстрый поиск в google говорит, что это не так, но может ли кто-нибудь сказать мне, существует ли что-то подобное в Java? Я пытаюсь сделать свой код более...
196296 просмотров
schedule 12.08.2023

Всегда ли комментарии обрабатываются до препроцессора?
/* #define FOO */ #ifdef FOO #define BAR "pirate" #else #define BAR "ninja" #endif int main() { printf(BAR); getchar(); } В этом коде FOO не определен (Visual Studio 2008). Я предполагаю, что сначала обрабатываются комментарии, затем...
2266 просмотров
schedule 28.10.2023

MSBuild.exe не принимает ни /p:DefineConstants, ни /p:PreprocessorDefinitions
Я прочитал довольно много статей о переполнении стека, которые отвечали на вопрос «Как мне передать определения препроцессора компилятору из командной строки MSBuild», и все они ответили с некоторыми вариантами: MSBuild.exe...
24017 просмотров

Рекомендовать внешний интерфейс C, который сохраняет директивы препроцессора
Я хотел бы начать проект, который включает преобразование кода C , но я хотел бы включить директивы препроцессора. Я не хочу изобретать велосипед, написав свой собственный синтаксический анализатор C , поэтому кто-нибудь знает интерфейс, который...
1108 просмотров

Должно ли определение переменной находиться в заголовочных файлах?
Мои базовые знания C и процесса компиляции в последнее время заржавели. Я пытался найти ответ на следующий вопрос, но не смог связать основы компиляции, компоновки и предварительной обработки. Быстрый поиск в гугле тоже не особо помог. Итак, я...
31914 просмотров

Добавление аргументов по умолчанию в вариативный макрос
Можно ли добавить аргументы по умолчанию перед переменным аргументом в вариативном макросе? например, у меня есть версия макроса что-то вроде #define MACRO(arg1, ...) func(arg1, ##__VA_ARGS__) Я хотел бы добавить еще 2 аргумента по умолчанию...
7038 просмотров

Статические, определяемые и константные в C
Я читал, что статические переменные используются внутри функции, когда вы не хотите, чтобы значение переменной изменялось/инициализировалось каждый раз при вызове функции. Но как насчет определения статической переменной в основной программе перед...
25001 просмотров
schedule 19.12.2022

Как именно работает трюк с двойной строкой?
По крайней мере, некоторые препроцессоры C позволяют вам преобразовать значение макроса в строку, а не его имя, передав его через один функционально-подобный макрос другому, который преобразовывает его в строку: #define STR1(x) #x #define...
18931 просмотров
schedule 22.02.2022

Почему при повторном сканировании замены аргументов не заменяются?
Рассмотрим следующие определения макросов и их вызовы: #define x x[0] #define y(arg) arg y(x) Этот вызов расширяется до x[0] (проверено на Visual C ++ 2010, g ++ 4.1, mcpp 2.7.2 и Wave). Почему? В частности, почему он не расширяется до...
840 просмотров
schedule 11.03.2023

Проблемы конкатенации с макросом отладочной печати в gcc
Чтобы полностью отключить вывод отладки в c-source, я обычно определяю следующий ПРОСТОЙ макрос #1 #define dprintf(args) Чтобы включить отладочный вывод, я альтернативно определяю макрос № 2 #define dprintf(args) printk##args...
533 просмотров

Реализация конкатенации строковых литералов в C и C++
Насколько я знаю, этот вопрос в равной степени относится к C и C++ . Шаг 6 «этапов перевода», указанных в стандарте C (5.1.1.2 в проекте стандарта C99), гласит, что смежные строковые литералы должны быть объединены в один литерал. Т.е....
2670 просмотров
schedule 21.12.2023

В чем причина того, что #pragma Once находится внутри защитных ограждений заголовка?
Только что видел это внутри <boost/asio.hpp> #ifndef BOOST_ASIO_HPP #define BOOST_ASIO_HPP #if defined(_MSC_VER) && (_MSC_VER >= 1200) # pragma once #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) /// .... #endif...
7349 просмотров

C Функция проверки ошибок
Для моего класса системного программирования мы много программируем на C и должны проверять ошибки большинства функций, поскольку в настоящее время мы учимся программировать с помощью pthreads. Причина, по которой я говорю, что это не настоящая...
2517 просмотров