Переключение между плавающей точкой и двойной точностью во время компиляции

Куда мне обратиться, если я хочу переключаться между плавающей точкой и двойной точностью во время компиляции. Как, если пользователь хочет все в плавании вместо двойной точности, как я могу поддерживать эту гибкость? Другими словами, как мне определить переменную, которая может быть условной переменной с плавающей или двойной точностью?

3

Решение

Если все в порядке, чтобы сделать переключатель во время компиляции, простой typedef сделал бы:

#ifdef USE_DOUBLES
typedef double user_data_t;
#else
typedef float user_data_t;
#endif

использование user_data_t в вашем коде, и установить USE_DOUBLES если ты хочешь doubles во время компиляции:

g++ -DUSE_DOUBLES=1 myprogram.cpp
14

Другие решения

Не зная точно, как вы собираетесь использовать данные, трудно порекомендовать правильное решение.

Посмотрите на союз тип даты.

http://msdn.microsoft.com/en-us/library/5dxy4b7b(v=VS.80).aspx

Шаблоны также будет приемлемым вариантом в зависимости от использования.

http://msdn.microsoft.com/en-us/library/y097fkab.aspx

1

Я предпочитаю не иметь #defineв моем коде.

У меня будет два разных заголовка с двумя разными typedefs, и позволяют вариантам сборки выбрать, какой заголовок включен.

1
По вопросам рекламы [email protected]