реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Преобразовать число в строку в препроцессоре, стандартный способ не работает
vet
сообщение Jan 15 2016, 08:16
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Типовой финт ушами для строкового представления числового макроса:
Код
#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)

#define VERSION 1

char g_VersionSignature[] = "VERSION=" STR(VERSION);

GCC: в строке лежит VERSION=1.
IAR: в строке лежит VERSION=VERSION.

Можно ли с этим бороться/обойти?


UPD: Вопрос снят, причиной была ошибка в имени макроса, которую препроцессор не обнаруживает.

Сообщение отредактировал vet - Jan 15 2016, 08:18


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
SSerge
сообщение Jan 15 2016, 08:20
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Хм, проверил в IAR ANSI C/C++ Compiler V7.30.4.8167/W32 for ARM, работает как положено.
Код
    381          #define STR_HELPER(x) #x
    382          #define STR(x) STR_HELPER(x)
    383          
    384          #define VERSION 1
    385          

   \                                 In section .data, align 4
    386          char g_VersionSignature[] = "VERSION=" STR(VERSION);
   \                     g_VersionSignature:
   \   00000000   0x56 0x45          DC8 "VERSION=1"
   \              0x52 0x53    
   \              0x49 0x4F    
   \              0x4E 0x3D    
   \              0x31 0x00    
   \   0000000A   0x00 0x00          DC8 0, 0

В строке STR(VERSION); опечатки нет?


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
vet
сообщение Jan 15 2016, 08:22
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Цитата(SSerge @ Jan 15 2016, 11:20) *
В строке STR(VERSION); опечатки нет?

Да, уже нашёл.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 18:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01352 секунд с 7
ELECTRONIX ©2004-2016