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

Включить только определенные библиотеки в операционной системе
При написании приложения, которое нужно скомпилировать на Mac, Linux и Windows, как лучше всего управлять различными библиотеками, которые необходимо включить в различные операционные системы. Например, для использования перенасыщенного набора...
418 просмотров

Как проверить ОС с помощью директивы препроцессора?
Мне нужен мой код, чтобы делать разные вещи в зависимости от операционной системы, в которой он компилируется. Я ищу что-то вроде этого: #ifdef OSisWindows // do Windows-specific stuff #else // do Unix-specific stuff #endif Есть ли способ...
163767 просмотров

Какие применения оператора препроцессора ## и какие подводные камни следует учитывать?
Как упоминалось во многих из моих предыдущих вопросов, я работаю через K&R, а сейчас занимаюсь препроцессором. Одна из наиболее интересных вещей, о которой я никогда раньше не знал из своих предыдущих попыток изучить C, - это оператор препроцессора...
70913 просмотров

Преобразование токена препроцессора в строку
Я ищу способ преобразовать токен препроцессора в строку. В частности, у меня где-то есть: #define MAX_LEN 16 и я хочу использовать его для предотвращения переполнения буфера: char val[MAX_LEN+1]; // room for \0 sscanf(buf,...
82116 просмотров
schedule 22.02.2024

Как лучше всего создавать варианты одного и того же приложения C/C++?
У меня есть три тесно связанных приложения, созданных из одного и того же исходного кода, скажем, APP_A, APP_B и APP_C. APP_C является надмножеством APP_B, которое, в свою очередь, является надмножеством APP_A. До сих пор я использовал определение...
1336 просмотров

Какой хороший справочник по шаблонам использования X-макросов в C (или, возможно, C ++)?
Основное определение, пример и несколько ссылок для " X-Macros ": приведено в этой статье в Википедии о препроцессоре C : X-Macro - это файл заголовка (обычно с расширением «.def» вместо традиционного «.h»), который содержит список похожих...
6430 просмотров
schedule 13.10.2023

Запретить препроцессору C выполнять определенную макроподстановку
Как я могу сказать препроцессору не заменять конкретный макрос? Конкретная проблема заключается в следующем: файлы заголовков Windows определяют макрос GetMessage. Мои заголовочные файлы C++ с моим API имеют метод GetMessage. Я не хочу...
3995 просмотров
schedule 08.07.2022

Надлежащая практика программирования для определений макросов (#define) в C
Например, никогда не определяйте такой макрос: #define DANGER 60 + 2 Это может быть потенциально опасно, когда мы выполняем такую ​​операцию: int wrong_value = DANGER * 2; // Expecting 124 Вместо этого определите так, потому что вы...
24682 просмотров
schedule 19.01.2023

Замены препроцессора C
Я заинтересован в использовании чего-то другого, кроме препроцессора C , для предварительной обработки исходного кода C и Objective-C. Есть ли хорошие альтернативы? Примером может быть что-то, что позволяет уйти в фрагмент кода Python или Perl...
13083 просмотров
schedule 15.07.2022

Целочисленное значение изменяется при выходе из блока препроцессора
У меня есть кусок кода, где кажется, что переменная изменяется в конце блока кода препроцессора. int initialKeyCount; #if(DEBUG) // int initialKeyCount = _root.CountAllKeys(); initialKeyCount = 20000; #endif currNode =...
162 просмотров
schedule 22.03.2023

Как я могу получить текущее значение DateTime из прекомпилятора в C #?
В C # 3.0 у меня есть свойство, которое должно содержать версию класса. Номер версии - это просто дата и время компиляции. Прямо сейчас у меня есть следующий код: public DateTime Version { get { return DateTime.UtcNow; } } Очевидно, это...
3621 просмотров
schedule 11.05.2022

Когда вы можете опустить расширение файла в директиве #include?
Я играю с gmock и заметил, что он содержит эту строку: #include <tuple> Я ожидал tuple.h . Когда можно исключить расширение и придает ли это директиве другое значение?
13382 просмотров
schedule 29.04.2022

Удалять части #ifdef DEBUG для выпуска или нет?
Когда вы публикуете исходный код для просмотра кем-то еще, когда стиль кодирования не определен четко (без каламбура), удаляете ли вы части #ifdef DEBUG? (это те части, которые компилируются только при определении DEBUG) Если я удалю его, код...
2788 просмотров
schedule 22.03.2022

Как я могу удалить дублирование между этими макросами C?
У меня есть пара следующих макросов препроцессора C для создания тестовых функций: // Defines a test function in the active suite #define test(name)\ void test_##name();\ SuiteAppender test_##name##_appender(TestSuite::active(),...
166 просмотров
schedule 09.03.2023

Какие макросы препроцессора C уже определены в gcc?
В gcc , как я могу проверить, какие определения препроцессора C используются во время компиляции программы C, в частности, какие стандартные или специфичные для платформы определения макросов определены?
3641 просмотров
schedule 19.04.2022

Расширение макроса препроцессора в другую директиву препроцессора
Сначала я думал, что мне это нужно, но в конце концов я избегал этого. Однако мое любопытство (и жажда знаний, кхм) заставляют меня спросить: Может ли макрос препроцессора, например, в #include "MyClass.h"...
9209 просмотров

Препроцессор C сначала удаляет комментарии или раскрывает макросы?
Рассмотрим эту (ужасную, ужасную, плохую, очень плохую) структуру кода: #define foo(x) // commented out debugging code // Misformatted to not obscure the point if (a) foo(a); bar(a); Я видел, как препроцессоры двух компиляторов генерируют...
28725 просмотров
schedule 11.03.2023

Почему я не могу использовать sizeof в состоянии препроцессора?
Я понимаю, что sizeof - это оператор, который вычисляется во время компиляции до целочисленной константы. Но, похоже, его нельзя использовать в директиве препроцессора #if, например: #if 4 == sizeof(int) typedef int Int32; #endif...
5729 просмотров
schedule 27.07.2023

#define макрос для отладочной печати на C?
Попытка создать макрос, который можно использовать для печати отладочных сообщений, когда определена DEBUG, например, следующий псевдокод: #define DEBUG 1 #define debug_print(args ...) if (DEBUG) fprintf(stderr, args) Как это достигается с...
221290 просмотров
schedule 22.08.2023

Макросы как аргументы директив препроцессора
Столкнувшись с вопросом, можно ли выбрать #include s в препроцессоре, я сразу подумал невозможно . .. Только чтобы позже узнать, что это действительно возможно, и вам нужно только следить за расширения аргументов (о которых может позаботиться,...
1498 просмотров
schedule 24.07.2023