Не зная достаточного контекста (может быть полезно увидеть определение, вызов и где вы пытаетесь установить точку останова), вот несколько предположений:
Вы устанавливаете точку останова в макросеопределение или где оно называется?Если вы установите его в определении, то это именно та ошибка, которую вы увидите.Определение говорит препроцессору делать замены в другом месте вашего кода, поэтому к тому времени, когда код достигнет компилятора, строка с #define на нем будет заменена пустой строкой.
Если вы правильно настроилиточка останова в точке, где она используется, вы уверены, что используете определение макроса, которым вы себя считаете, и что макрос не скомпилирован условно, чтобы не создавать код?Это распространенный метод отключения некоторых вещей (например, вывод отладки), который не будет давать исполняемый код в строке, вызывающей его (если только вокруг него нет другого исполняемого кода).Один из способов проверить это - поместить строку #error прямо рядом с определением макроса - если он используется, компилятор выдаст ошибку.
Помните, что функции макросов - это просто текстовые замены, и поэтомувызов их помещает весь их код в одну строку вызова (каждый вызов). На самом деле вы не можете их отладить (в смысле перехода в «многострочную» макрофункцию), вы можете только пройти мимо нихсравнивая состояние до и после.Это одна из основных причин, почему сложные макрофункции могут быть плохой идеей.