Member 10859220 Ответов: 1

Вызов функции печати вместе со значением параметра с помощью программы C


#include <stdio.h>
typedef int BOOL;
#define FALSE 1
#define TRUE 1

#define CALL_FUN(_command, _expResult) CallFunction(__FILE__, __LINE__, #_command, _command, _expResult)

BOOL CallFunction(const char* pFile, int lineNr,  const char* pCommand, BOOL retVal, BOOL expResult)
{
    printf("%s[%d]:%s return %s expected %s \n",pFile, lineNr, pCommand, retVal?"TRUE":"FALSE", expResult?"TRUE":"FALSE");
    return retVal;
}


BOOL isEqual(int i, int j)
{
    return i == j;
}

int main(void)
{
    int left    = 10;
    int right   = 11;
    CALL_FUN(isEqual(left, right),TRUE);
    return 0;
}


Output: .. / src/CreateFileProj. c[34]: isEqual (left, right) return FALSE expected TRUE

Я хочу напечатать вышеприведенный вывод, как показано ниже. Пожалуйста, дайте мне знать, как я могу этого достичь

Output: .. / src/CreateFileProj. c[34]: isEqual (left=10, right=11) return FALSE expected TRUE

Что я уже пробовал:

Я хочу напечатать вызов функции вместе со значениями параметров . Пожалуйста, дайте мне знать, как я могу это сделать .

Output : ../src/CreateFileProj.c[34]:isEqual(left, right) return FALSE expected TRUE 

I want to print the above output like below. Please let me know how can I achieve that 

Output : ../src/CreateFileProj.c[34]:isEqual(left=10, right=11) return FALSE expected TRUE 

1 Ответов

Рейтинг:
2

Richard MacCutchan

#define CALL_FUN(_command, _expResult) CallFunction(__FILE__, __LINE__, #_command, _command, _expResult)

Вы используете Строковый Оператор (#)[^] на _command таким образом, макрос-результат таков:
CallFunction(<filename>, <line_number>, "isEqual(left, right)", isEqual(left, right), TRUE)

Таким образом, вы не получаете значения left и right Я не знаю никакого способа для компилятора заменить значения так, как вы требуете. Вам нужно будет добавить их в качестве дополнительных параметров.