- Обновление 20200114: новая версия макроса #define Entry и новые результаты
Еще один новый вопрос ie. Я пытаюсь создать макрос #define, который можно использовать для генерации записи в подпрограмму вместе с ее #pragma prolog () и #pragma epilog ():
#pragma prolog(<entryname>," <prologasmstuff>")
#pragma epilog(<entryname>," <epilogasmstuff>")
functiontype entryname (<parameters>) {
Я пробовал пара вариантов следующего (это представляет сегодняшнюю попытку):
#define Entry( \
EntryType \
,EntryName \
,EntryVariables \
,PrologString \
,EpilogString \
) \
_Pragma("prolog(EntryName,\" PrologString\"") \
_Pragma("epilog(Entryname,\" EpilogString\"") \
EntryType EntryName (EntryVariables) {
Препроцессор, кажется, не в состоянии сделать эту работу. Макрос вызывается через:
Entry(void,wto,char * MsgArea," CKKIP31P"," CKKEP31P")
И компилятор срывает следующее:
68 |Entry(void,wto,char * MsgArea," CKKIP31P"," CKKEP31P") | 1005
68 +_Pragma("prolog(EntryName,\" PrologString\"") _Pragma("epilog(Entryname,\" EpilogString\"") void \+ 1005
68 +wto (char * MsgArea) { + 1005
69 | | 1006
Компилятор выдает следующие сообщения:
WARNING CCN3224 SSAF.METALC.C(TSTENTRY):68 Incorrect pragma ignored.
WARNING CCN3224 SSAF.METALC.C(TSTENTRY):68 Incorrect pragma ignored.
Любые мысли о том, как посмотреть, как выглядят "разрешенные" #pragmas или что с ними не так?
Спасибо, Скотт Фейген