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

Можно ли преобразовать этот макрос в функцию?
Во время рефакторинга кода и избавления от всех тех #defines, которые нас теперь учат ненавидеть, я наткнулся на эту красоту, используемую для вычисления количества элементов в структуре: #define STRUCTSIZE(s) (sizeof(s) / sizeof(*s)) Очень...
3826 просмотров
schedule 20.03.2023

Массив Fortran в массив C. Нужны глупые трюки с макросами
У меня есть этот «упрощенный» код fortran real B(100, 200) real A(100,200) ... initialize B array code. do I = 1, 100 do J = 1, 200 A(J,I) = B(J,I) end do end do Один из гуру программирования предупредил меня, что fortran...
3006 просмотров
schedule 19.07.2022

Используйте #ifdefs и #define, чтобы при желании превратить вызов функции в комментарий
Можно ли сделать что-то подобное #ifdef SOMETHING #define foo // #else #define foo MyFunction #endif Идея состоит в том, что если ЧТО-ТО определено, тогда вызовы foo (...) становятся комментариями (или чем-то, что не оценивается или не...
29941 просмотров

Стиль C: макросы или препроцессор?
Я написал библиотеку для сопоставления строк с набором шаблонов, и теперь я могу легко встраивать лексические сканеры в программы на C. Я знаю, что существует много хорошо зарекомендовавших себя инструментов для создания лексических сканеров (lex и...
1692 просмотров
schedule 11.04.2024

Какую директиву препроцессора или другой метод мне следует использовать, чтобы различать 32- или 64-битную среду?
Я хотел бы скомпилировать следующую программу C для 32- и 64-битных систем. #include <stdio.h>...
2861 просмотров
schedule 25.12.2022

Функциональное программирование на C с помощью макросов генераторов функций высшего порядка
Будьте внимательны, это чертовски сложный вопрос ;-) Я хочу использовать функции шаблона для общих действий по сбору данных (таких как поиск, foreach и т. Д.) На C, сохраняя при этом проверку статического типа компилятора. Это довольно просто,...
6162 просмотров

Определения препроцессора платформы C
Я пишу небольшую библиотеку на C++, которую мне нужно построить на нескольких разных платформах, включая iPhone, Windows, Linux, Mac и Symbian S60. Я написал большую часть кода так, чтобы он не зависел от платформы, но есть некоторые части, которые...
3573 просмотров
schedule 23.01.2023

Различия в операторе конкатенации Macro ## между Visual-C++ и gcc
У меня есть такой макрос (не совсем, но функция вполне эквивалентна): #define STRUCTMEMBER(Member,Value) GlobalStructInstance. ## Member = Value ... STRUCTMEMBER(Item,1); Это отлично работает в Visual C++, но gcc 3.4.5 (MingGW) выдает...
7914 просмотров

Выделение значения #defined в VIM
Я выделил XYZ в файле заголовка, где я определил XYZ. Однако в том месте, где он используется, XYZ не выделяется. Как мне это исправить? Я приложил два снимка экрана (см. TH_SYN в коде), чтобы прояснить свой вопрос - текст ссылки Любые...
3806 просмотров

Когда использовать функциональные макросы в C
Этим вечером я читал код, написанный на C, и в начале файла был похожий на функцию макрос HASH: #define HASH(fp) (((unsigned long)fp)%NHASH) Это заставило меня задуматься, почему кто-то решил реализовать функцию таким образом, используя...
11966 просмотров
schedule 04.04.2023

Преобразование строки из __DATE__ в time_t
Я пытаюсь преобразовать строку, полученную из макроса __DATE__ , в time_t . Мне не нужен полноценный синтаксический анализатор даты/времени, было бы здорово что-то, что обрабатывает только формат макроса __DATE__ . Метод препроцессора был бы...
18503 просмотров
schedule 02.08.2023

Следует ли использовать #include в заголовках?
Обязательно ли #include какой-то файл, если внутри заголовка (* .h) используются типы, определенные в этом файле? Например, если я использую GLib и хочу использовать базовый тип gchar в структуре, определенной в моем заголовке, нужно ли делать...
67140 просмотров
schedule 30.06.2023

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

Как я могу определить отношение MIN/MAX целочисленного типа C в препроцессоре?
Я пытаюсь определить взаимосвязь размеров целочисленных типов заданного компилятора с помощью препроцессора. Мое требование состоит в том, чтобы у меня было два типа, один из которых беззнаковый, а другой — подписанный тип, способный хранить каждое...
207 просмотров
schedule 18.06.2023

#if 0 как определение
Мне нужен способ определить макрос FLAGS_IF (или эквивалентный), чтобы FLAGS_IF(expression) <block_of_code> FLAGS_ENDIF при компиляции в режиме отладки (например, с определенным переключателем компилятора) компилируется в if...
4281 просмотров
schedule 20.12.2022

Почему препроцессор дает пробел?
Я хочу прокомментировать строку с помощью препроцессора: #define open /##* #define close */ main() { open commented line close } когда я сделаю $gcc -E filename.c я ожидал /* commented line */ но я получил / *...
224 просмотров
schedule 22.09.2023

Листинг C-констант/макросов
Есть ли способ заставить препроцессор GNU C , cpp ( или какой-либо другой инструмент ) отображать все доступные макросы и их значения в заданной точке C файл? Я ищу специфичные для системы макросы при переносе программы, которая уже умеет...
1802 просмотров
schedule 18.11.2023

Какой предопределенный макрос я могу использовать для обнаружения лязга?
Я пытаюсь определить компилятор, использованный для компиляции моего исходного кода. Я легко могу найти предопределенные макросы для проверки MSVC или GCC (см. http://predef.sourceforge.net/ например), но я не могу найти макрос для проверки на...
34688 просмотров
schedule 16.04.2022

Значение C определяет неожиданное изменение
В моем коде много #define . Теперь появилась странная проблема. У меня есть это: #define _ImmSign 010100 (Я пытаюсь смоделировать двоичное число) Очевидно, я ожидаю, что число станет 10100. Но когда я использую число, оно...
607 просмотров
schedule 14.05.2023

Ошибка предварительной обработки C++ в коде
#include "iostream" #include "string" using namespace std; #define AA(bb) \ string(::##bb); int main (int argc, char *argv[]) { AA(aa); } Это дает мне кучу ошибок, но я пытаюсь понять эту...
718 просмотров
schedule 16.10.2022