Вопросы по теме '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 просмотров
schedule
19.05.2022
Стиль 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 просмотров
schedule
23.06.2022
Определения препроцессора платформы 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 просмотров
schedule
04.06.2023
Выделение значения #defined в VIM
Я выделил XYZ в файле заголовка, где я определил XYZ. Однако в том месте, где он используется, XYZ не выделяется. Как мне это исправить?
Я приложил два снимка экрана (см. TH_SYN в коде), чтобы прояснить свой вопрос -
текст ссылки
Любые...
3806 просмотров
schedule
29.03.2023
Когда использовать функциональные макросы в 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