Не могу поместить math.h в пространство имен - PullRequest
0 голосов
/ 08 октября 2011

Я занимаюсь кроссплатформенной разработкой и столкнулся с еще одной странной проблемой ..

namespace Math 
{
    #include <math.h>
}

Это то, что я пытаюсь сделать. Он отлично работает на iOS, но на Android все внутри math.h не является членом Math, когда я пытаюсь скомпилировать его. После некоторой пробной ошибки я обнаружил, что ndk не помещает материал в math.h в пространство имен Math, поскольку функции существуют без префикса Math ::. Большая проблема в том, что некоторые функции в math.h конфликтуют с моими собственными вспомогательными функциями. Как я могу это исправить?

Ответы [ 4 ]

3 голосов
/ 08 октября 2011

Вы действительно не должны пытаться помещать какие-либо системные заголовки в другое пространство имен. Решение, каким бы болезненным оно ни было на данном этапе разработки, состоит в том, чтобы поместить весь ваш код в свое собственное пространство имен.

2 голосов
/ 08 октября 2011

А как насчет <cmath>? он помещает все в std:: (в C ++ 11).

2 голосов
/ 08 октября 2011

Не помещайте удобные функции в глобальное пространство имен.

Не пытайтесь обернуть math.h в пространство имен.

Там, все ок теперь.

Приветствия & hth.,

0 голосов
/ 08 октября 2011

Возможно, что-то еще включает math.h ранее в препроцессоре "конвейер".С включает проверку, было ли включено вменяемое включение ранее.В этом случае проверка #ifndef MATH_H привела к исключению всего файла.Попробуйте поместить ваше включение с пространством имен в начале ваших .c файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...