new color = COLOR(RED);
Да, таким методом компиляция проходит нормально.
А если вызывать вот так, то компиляция проходит с ошибкой
-l:
Вид для печати
new color = COLOR(RED);
Да, таким методом компиляция проходит нормально.
А если вызывать вот так, то компиляция проходит с ошибкой
-l:
Опс.. Да...
Попробуй так:
#define COLOR@RED@100<%1,%2> (%1FFCDD2%2) #define COLOR@RED@200<%1,%2> (%1EF9A9A%2) #define COLOR@RED@300<%1,%2> (%1E57373%2) #define COLOR@RED@400<%1,%2> (%1EF5350%2) #define COLOR@RED@500<%1,%2> (%1F44336%2) #define COLOR@RED@600<%1,%2> (%1E53935%2) #define COLOR@RED@700<%1,%2> (%1D32F2F%2) #define COLOR@RED@800<%1,%2> (%1C62828%2) #define COLOR@RED@900<%1,%2> (%1B71C1C%2) #define COLOR(%1) (_:clr@aM:clr@aN:$%1,) #define clr@aM:%8$%0,%1,) clr@rS:COLOR@%0@%1<0x,AA>) #define clr@aN:%8$%0,) clr@rS:COLOR@%0@100<0x,AA>) // 100 - default value. #define clr@rS:%1\32;%0,) clr@rS:%1%0,) COLOR(RED, 800)
Решил немного модифицировать и добавить третий аргумент, но теперь перед вторым и третьим параметром не убирается пробел, пробовал самостоятельно разрешить этот пробел, но так и не понял как это сделать:
#define COLOR(%1) (_:COLOR@A:COLOR@B:COLOR@C:$%1,) #define COLOR@A:%8$%0,%1,%2,) COLOR@S:@COLOR@%0@%1<0x,%2>) #define COLOR@B:%8$%0,%1,) COLOR@S:@COLOR@%0@%1<0x,AA>) #define COLOR@C:%8$%0,) COLOR@S:@COLOR@%0@500<0x,AA>) #define COLOR@S:%1\32;%0,) COLOR@S:%1%0,)
Результат:
(_:COLOR@S:@COLOR@RED@ 500<0x, AA>)
Необходимо:
(_:COLOR@S:@COLOR@RED@500<0x,AA>) -> (_:COLOR@S:(0xF44336AA))
Спасибо, только еще пробел остался в таком варианте использования.
new color = (_:COLOR@S:(0xF44336 AA));
А можно еще как то модифицировать, так чтобы можно было и такой вариант вызвать или для такого варианта лучше новое правило сделать?
#define @COLOR@BLACK<%1,%2> (%1000000%2) #define @COLOR@WHITE<%1,%2> (%1FFFFFF%2)
Допустим, есть макрос такого вида
#define SomeFunc1(%0,%1)
"%0" и "%1" - целочисленные переменные. Возможно ли убрать все пробелы между запятой и "%1", не добавляя, при этом, никаких символов или тегов?
В целом, задача заключается в том, чтоб переместить "%1" в начало
#define SomeFunc1(%0,%1) %1 = SomeFunc2(%0)
И если прописать в коде, например, так:
SomeFunc1(var1, var2);
То компилятор ругнётся на кривую табуляцию, так как "var2" перенесётся в начало вместе с пробелом. Собственно, от этого предупреждения и нужно избавиться.