Вопросы по теме 'stringification'

C Макросы для создания строк
Альтернативные заголовки (для облегчения поиска) Преобразование токена препроцессора в строку Как сделать строку char из значения макроса C ? Оригинальный вопрос Я хотел бы использовать C #define для построения литеральных строк...
22848 просмотров
schedule 22.03.2023

Как преобразовать конкатенированные строки в широкий символ с помощью препроцессора C?
Я работаю над проектом, в котором у меня есть много постоянных строк, образованных конкатенацией (числа и т. д.). Например, у меня есть макрос LOCATION , который форматирует __FILE__ и __LINE__ в строку, которую я могу использовать, чтобы...
5843 просмотров

Прагма в макросе определения
Есть ли способ встроить оператор прагмы в макрос с другими операторами? Я пытаюсь добиться чего-то вроде: #define DEFINE_DELETE_OBJECT(type) \ void delete_ ## type_(int handle); \ void delete_ ##...
44468 просмотров
schedule 09.12.2022

Доступ к значению определения макроса препроцессора
Если я добавлю макрос «FOO=bar» в GCC_PREPROCESSOR_DEFINITIONS (или макросы препроцессора, если вы используете XCode), каким будет лучший способ получить доступ к значению «FOO»? В настоящее время я использую неуклюжий: #define...
6223 просмотров

Препроцессор C, преобразование результата макроса в строку
Я хочу упорядочить результат расширения макроса. Я пробовал со следующим: #define QUOTE(str) #str #define TEST thisisatest #define TESTE QUOTE(TEST) И TESTE расширяется до: «TEST», в то время как я пытаюсь получить «thisisatest». Я знаю,...
25115 просмотров
schedule 07.12.2022

Макрос препроцессора GCC: вставка x и x не дает действительного токена предварительной обработки
#define PATH "yagh/headers/" #define FILNAME "includefile" #define CONCAT(a__, b__) CONCAT_DO(a__, b__) #define CONCAT_DO(a__, b__) a__##b__ #define CONCATTHREE(a__, b__, c__) CONCAT(CONCAT(a__, b__), c__) #define STRINGIFY(a__) #a__ #include...
9101 просмотров

Почему моя программа на C выводит это?
Я пытаюсь решить два вопроса, связанных с препроцессором, но в обеих программах я получаю результаты, которые не могу понять, как это сделать. Ниже моя программа: #include<stdio.h> #define SQUARE(x) x*x int main() { float s=10,u=30 ,t=2,a;...
1883 просмотров

Что такое # для форматирования с использованием %s
Я наткнулся на этот пример утверждения и задался вопросом, для чего предназначен # : #define ASSERT( x ) if ( !( x ) ) { \ int *p = NULL; \ DBGPRINTF("Assert failed: [%s]\r\n Halting.", #x); \ *p=1; \ }
282 просмотров
schedule 18.01.2023

Объединить int в строку с помощью препроцессора C
Я пытаюсь понять, как я могу объединить #define 'd int в #define 'd строку с помощью препроцессора C . Мой компилятор - GCC 4.1 для CentOS 5. Решение также должно работать для MinGW. Я хотел бы добавить номер версии к строке, но единственный...
51082 просмотров
schedule 14.12.2022

Строковая перегрузка и флаг utf8
Я чего-то не понимаю в перегрузке строк и в том, как она взаимодействует с флагом utf8. Например, печатается следующий код: n is utf8 at ./test_stringify_utf8.pl line 46. $t->{name} is utf8 at ./test_stringify_utf8.pl line 47. t is not utf8...
125 просмотров
schedule 17.02.2023

Как преобразовать строку, содержащую запятую?
Я хочу передать строку версии в команду компиляции: $ g++ -Wall -D VERSION="2013-12-03 02:15:21, commit cb060df" -o main main.cpp Внутри моего кода у меня есть следующее: #define TOSTR_(x) #x #define STRINGIFY(x) TOSTR_(x) #define...
2635 просмотров

Звездочка в имени аргумента с препроцессором C
Я хочу реализовать кроссплатформенную сборку моей DLL с помощью mingw32/VC. На данный момент со стороной mingw все в порядке. Однако мне нужно обернуть несколько вещей в макрос для VC (он построен как /TC), например: void...
703 просмотров
schedule 27.11.2022

Препроцессор, создающий строку оператора с префиксами строкового литерала
Итак, я хочу сделать традиционную вещь, связанную со строковым оператором в макросе: #define FOO(x) foo(#x, (x)) Однако мне нужно использовать префикс строкового литерала: http://en.cppreference.com/w/cpp/language/string_literal Что...
1067 просмотров

Как вставить целое число в строку макроса?
Я впервые вижу стрингификацию и вставку токенов. Я чувствую, что это может быть хорошим инструментом для этого макроса: #define MY_NUMBER 3 #define MY_STRING "the number three: ##MY_NUMBER" printf("%s\n", MY_STRING); должен вывести:...
68 просмотров
schedule 18.05.2023

Как я могу добавить целое число, используя «##» в препроцессоре C?
#include<stdio.h> #define DEF6 625 #define DEF6 625 #define DEF(n) DEF##n void main(){ printf("%d\n", DEF(6)); } Этот код работает. но #include<stdio.h> #define DEF6 625 #define DEF(n) DEF##n void main(){ int a=6;...
86 просмотров
schedule 08.08.2022

Строка loopcounter для ссылки на члены структуры C
У меня есть две структуры, которые выглядят так: typedef unsigned char byte; struct my_struct_2 { int type; int length; //will be 2 in this case byte value1; //MSB byte value2; //LSB } struct my_struct_4 { int type; int length; //will be 4 in...
60 просмотров
schedule 01.04.2023

Странная строка токена в C с переменной linux-* или строкой
Это первый вопрос в stackoverflow. До сих пор я получил так много помощи отсюда. Спасибо! У меня есть следующий упрощенный код: #define str(s) str2(s) #define str2(s) #s #define T_A linux-x86_64 const char* target_arch = str(T_A); #include...
86 просмотров
schedule 14.01.2023