В моем коде я переписывал static_cast<int *>
Около миллиона раз, есть ли способ переопределить ключевое слово, чтобы всякий раз, когда я это называю, оно делало то же самое?
пример
cast
будет делать то же самое, что и static_cast<int *>
static_cast
имеет преимущество в том, что программисты на C ++ точно распознают, что это такое, не нужно искать #define
или другое заявление. Я очень рекомендую вам продолжать использовать static_cast
,
Однако я предполагаю, что вашей проблемой является количество требуемых нажатий клавиш, и поэтому наилучшим решением будет использование текстового редактора, который поддерживает макросы. Таким образом, код, который в итоге сохраняется, использует стандартный static_cast<T>(x)
синтаксис, но вам может понадобиться только набрать что-то вроде [sс]табуляцияTтабуляцияИкстабуляция.
Информация о том, как это сделать, будет найдена в документации таких редакторов. Я не большой поклонник настраиваемых редакторов, так что подробности за пределами моего понимания.
Просить более простой способ сделать что-то опасное …
Да, есть много способов выполнить то, что вы просите, в том числе
Шаблон C ++,
определение макроса,
ярлык редактора,
пользовательская предварительная обработка,
обученная обезьяна, которая исправляет код.
Но все, что вам нужно сделать, это сделать ваш код еще менее привлекательным.
Вместо этого попытайтесь выяснить, как вы так часто потерять информацию о типе так что вы должны положить его обратно, так сказать.
Общее решение очень простое: не выбросить информацию о типе в первую очередь.
Вы имеете в виду, как это?
#define SCAST(T,X) static_cast<T>(X);
Я должен предупредить вас, что, как правило, чрезмерное использование таких определений может сделать ваш код неясным и трудным для понимания.
Что еще более важно вы должны остерегаться макросов, так как они могут привести к трудностям при поиске ошибок, например:
#define SQUARE(X) = X*X;
Ну, если вы называете это с x++
препроцессор выполнит буквальную замену, и вы получите (x++)*(x++);
Это означает, что это будет не тот ответ, который вы ищете, и что еще хуже, потому что замена происходит за кулисами, вам будет трудно найти причину.
Я бы посоветовал вам вместо этого взглянуть на шаблонные функции или просто встроенные вспомогательные функции, если это возможно, это безопасно и поможет избежать проблемы, на которую я указал.