Могу ли я условно заменить аргументы препроцессора?

Работая со структурой модульного тестирования, я столкнулся с ситуацией, когда мне нужно проверить аргументы макроса. Проще говоря, я хотел бы расширить макрос FOO(x)так, чтобы FOO(int)был shortи FOO(anything_else) будет длинным.

С шаблонами C++, конечно, это не проблема. Но здесь мне нужна настоящая замена токена, а не просто typedef. т.е. FOO(char) FOO(char) i;должно быть допустимым определением, равным long long i;.

6
задан Brian Tompsett - 汤莱恩 15 April 2016 в 22:31
поделиться