Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Преобразовать число в строку в препроцессоре
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
vet
Типовой финт ушами для строкового представления числового макроса:
Код
#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: Вопрос снят, причиной была ошибка в имени макроса, которую препроцессор не обнаруживает.
SSerge
Хм, проверил в 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); опечатки нет?
vet
Цитата(SSerge @ Jan 15 2016, 11:20) *
В строке STR(VERSION); опечатки нет?

Да, уже нашёл.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.