Код
#define _ioc(x,y,z) x,y, TOCHAR(z)
- нет, всеравно ругается
Error[Pe529]: this operator is not allowed in a template argument expression - ему не нравится решетка из макроса TOCHAR внутри шаблона, но как она туда попадает - непонятно, потомучто еще уровень вложенности добавил специально...
Но я уже решил проблему иначе! УРА!
Меня осенило использовать перечислимый тип в объявлении шаблона вместо char:
Код
typedef enum { L, H } GPIO_mode_t;
typedef enum { A, B, C, D, E, F } Portname;
template<Portname port, PORT_TYPE mask, GPIO_mode_t activestate>
class Pins
{...}
Так даже грамотнее получается, чем костыли из дефайнов громоздить.
Однако тем не менее выражаю благодарность
halfdoom и
Палыч за отзывчивость!