Объединить два макроса?

0

Следующий макрос MY_SIZE_OF_VARIABLE дает переменные sizeof, а MY_SIZE_OF_DATATYPE дает размер встроенного типа данных. Я хочу объединить эти два макроса в один макрос.

#define MY_SIZE_OF_VARIABLE(X) (char *)(&X+1)-(char *)(&X)
#define MY_SIZE_OF_DATATYPE(X) (X*)0 + 1

Я попытался объединить их, но я не могу этого сделать.

  • 1
    Если вы используете C ++, почему вы используете макросы?
  • 0
    Я хочу создать свою собственную функцию sizeof ().
Показать ещё 17 комментариев
Теги:

1 ответ

0

Вы не можете этого сделать. Часть злой магии, которая является макросами препроцессора, заключается в том, что это простая замена текста без суждения о синтаксическом контексте. Это так, что вы можете делать всевозможные дурацкие вещи, такие как конкатенация символов, ленивые оценки и т.д. И т.д. Другим концом этого является то, что вы не можете обернуться и спросить его, каков его параметр - все это просто текст в макро.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню