ual é a diferença entre uma macro e uma const em C +

Fiz essa pergunta em uma entrevista técnica:

Qual é a diferença entre umconst e uma macro em C ++?

Minha resposta foi que uma macro é uma diretiva de pré-processador e pode ser difícil depurar o aplicativo se você usar uma macro, pois ela é substituída pela expressão constante antes da compilação, enquanto umaconst pode ter um identificador de tipo e é fácil de depura

Alguém poderia apontar alguma outra diferença e qual deve ser a preferid

EDITAR

Da documentação da IBM para C ++:

A seguir estão algumas diferenças entre#define e aconst qualificador de tipo:

O#define diretiva @ pode ser usada para criar um nome para uma constante numérica, de caractere ou sequência de caracteres, enquanto um objeto const de qualquer tipo pode ser declarad

Um objeto const está sujeito às regras de escopo para variáveis, enquanto uma constante criada usando#define não é. Ao contrário de umconst objeto, o valor de uma macro não aparece no código-fonte intermediário usado pelo compilador porque eles são expandidos em linha. A expansão embutida torna o valor da macro indisponível para o depurado

Uma macro pode ser usada em uma expressão constante, como uma matriz ligada, enquanto que umaconst objeto não pode. (Acho que certamente precisamos usar macro para definirarray_size.

O compilador não verifica uma macro, incluindo argumentos de macr

questionAnswers(7)

yourAnswerToTheQuestion