__LINE__
получает строку current , означающую строку, к которой она была вызвана. Вам необходимо передать его в качестве параметра:
ERR ("fail..", __LINE__);
В противном случае это всегда будет строка внутри вашей функции ошибки, 5 в вашем примере. Измените вашу функцию так, чтобы она принимала тип int
для макроса __LINE__
.
Я бы использовал макрос, на который ответил @Ed Heal. Кроме того, причина, по которой вы получаете сообщение «msg not unknown», заключается в в том, что переменные в макросах должны быть заключены в круглые скобки (т. Е. (msg)
). , поскольку между именем макроса и начинающимися скобками есть пробел. список параметров.