Запитання з тегом «stringification»


4
Прагма у визначенні макросу
Чи є якийсь спосіб вбудувати висловлювання прагми в макро з іншими твердженнями? Я намагаюся досягти чогось типу: #define DEFINE_DELETE_OBJECT(type) \ void delete_ ## type_(int handle); \ void delete_ ## type(int handle); \ #pragma weak delete_ ## type_ = delete_ ## type Я добре з розширювальними рішеннями (крім хвилі), якщо такі …

3
Об’єднайте int у рядок за допомогою C-попередника
Я намагаюся зрозуміти, як я можу об'єднати #define'd int у #define' d рядок, використовуючи C- препроцесор. Мій компілятор - GCC 4.1 на CentOS 5. Рішення також має працювати для MinGW. Я хотів би додати номер версії до рядка, але єдиний спосіб, яким я можу змусити його працювати, - зробити копію …

13
Які програми слід використовувати для використання оператора препроцесора ## і що потрібно взяти до уваги?
Як згадувалось у багатьох моїх попередніх питаннях, я працюю через K&R і зараз працюю в препроцесорі. Однією з найцікавіших речей - те, чого я ніколи раніше не знав з жодної з попередніх спроб вивчити C - є ##оператор препроцесора. За даними K&R: Оператор препроцесора ## надає спосіб об'єднання фактичних аргументів …

2
Як, власне, працює подвійний струнний трюк?
Принаймні деякі препроцесори C дозволяють вам обробляти значення макросу, а не його ім'я, передаючи його через один функціональний макрос іншому, який його обробляє: #define STR1(x) #x #define STR2(x) STR1(x) #define THE_ANSWER 42 #define THE_ANSWER_STR STR2(THE_ANSWER) /* "42" */ Приклади випадків використання тут . Це справді працює, принаймні в GCC та …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.