우리 C/C++ 프로젝트는 SWIG의 모든 기능을 자유롭게 파이썬 스크립트에서 사용할 수 있도록 새로운 내부 스크립트를 사용하고 있습니다. SWIG는 가변 함수를 잘 감쌀 수 없으므로 로거 함수를 질식시킵니다.가변적 인 printf 스타일의 로거
#include <iostream>
void LogPrint(char *file, int line, char* msg)
{
std::cout << file << ":" << line;
std::cout << " [ " << msg << " ] ";
std::cout << std::endl;
}
#define MAX_LOG 256
#define LogPrintf(msg, args...) \
{ \
char *msg_buffer = new char[MAX_LOG]; \
snprintf(msg_buffer, MAX_LOG, msg, ##args); \
Log(__FILE__, __LINE__, msg_buffer); \
delete [] msg_buffer; \
}
main()
{
LogPrintf("%s = %f", "tau", 6.28318);
LogPrintf("%s = %f", "pi", 3.14159);
}
이 괜찮 :
그래서 나는 아래의 간단한 예와 같이, 꿀꺽 꿀꺽가 걸려 넘어하지 않습니다 매크로의 가변 기능을 숨기기로 결정? 이 문제에 대한 더 나은 해결책이 있습니까? 감사.
C/C++와 같은 것은 없으며 둘 다 가변 매크로에 대해 실제로 다릅니다. 귀하의 코드는 C++이지만 C로 질문에 태그를 달았습니다. 하나를 선택하거나 찾고있는 것을 더 잘 설명하십시오. –