2014-01-24 6 views
0

Это вопрос нуба.#ifdefs в .cpp и .h файлах

В основном я .h & .cpp файл мне нужно ввести условную компиляцию в нее через #ifdef. И .h, и .cpp содержат 10 функций. Мне нужно сделать условную компиляцию только для двух из них. Следовательно, я собирался обернуть 2 в файле .h в #ifdef

Вопрос 1: Нужно ли снова завершать реализацию функции в файлах C++? Наверное, нет, не так ли? Я хочу быть уверенным.

Вопрос 2: У меня есть набор указателей на функции этих 10 функций. Должен ли я обернуть #ifdef внутри этого массива для двух функций?

ответ

1

1: Если это функция класса, да. В противном случае вы можете быть в порядке, если не будете, если будете, но я лично. Потому что, если кто-то объявляет эту функцию как extern в другой единицы перевода, он просто получил доступ к функции.

2: Я бы не сделал этого, потому что это заставит всех клиентов обрабатывать 2 разных размера массива. Я бы только установил эти 2 указателя в NULL и обработал этот случай со стороны вызывающего абонента.

+0

да, вы правы около 1 и 2. Для 2 я нашел хорошее решение. Для 2 я буду проверять платформу #ifdef и реализовывать фиктивные функции в несовместимых платформах, которые просто возвращают ошибку. Таким образом, структура все равно останется прежней :-) – rockstar

+0

Уверен, что это тоже отлично работает, я делаю это все время для кода кросс-платформы. –