Предположим, у вас есть метка в устаревшем проекте Visual C ++ 2010, определенная следующим образом:
[foo.rc]
LTEXT "Foo",IDC_STATIC,42,42,42,42
В файле ресурса (.rc).
Теперь вы хотитесгенерировать текст на основе констант, определенных вами в заголовочном файле, например:
[foo.rc]
LTEXT FOO_TEXT,IDC_STATIC,42,42,42,42
Где FOO_TEXT был ранее определен другим способом, например:
[bar.h]
#define FROBNICATE "F"
#define OO "o"
#define ICANTTHINKOFMETASYNTACTICVARIABLESBEGINNINGWITHO "o"
#define FOO_TEXT (FROBNICATE OO ICANTTHINKOFMETASYNTACTICVARIABLESBEGINNINGWITHO)
Только то, чтоне работает, потому что .rc файлы не являются заголовочными файлами, и компилятор RC жалуется, говоря:
[Build output]
1>foo.rc(42): error RC2116: expecting number for ID
1>
1>
1>foo.rc(42): error RC2108: expected numerical dialog constant
Что бы вы сделали?
Чтобы уточнить, да, весьрассматриваемая строка известна во время компиляции, но она также должна быть построена из более мелких строк (в данном случае информация о версии и категория выпуска (разработка, выпуск и другая)).Конечно, я мог бы также написать код C ++, который делает это, но мне это кажется очень неуместным.
Итак, есть ли лучший способ?