我想自定义fprintf
函数以启用/禁用日志记录
我的项目使用Makefile。
#define ENABLE_LOG
void log(fmt, ...){
#ifdef ENABLE_LOG
va_list vargs;
va_start(vargs, fmt);
fprintf(stderr, vargs);
va_end(vargs);
#endif
}
log("Test"); # build error
log("TEST %d", 1); # build error
我如何创建可以使用log
启用/禁用的自定义ENABLE_LOG
函数
答案 0 :(得分:1)
您需要使用vfprintf()
。另外,我将创建一个空宏,以避免调用空函数。
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_help, null);
sendEmail = (Button)v.findViewById(R.id.SendBtn);
msg = (EditText)v.findViewById(R.id.msgTxt);
sendEmail.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
String message = msg.getText().toString();
sendEmail(message);
}
});
return v;
}
此外,请注意,已经有一个名为log
的C ++函数。您可能会考虑使用其他名称(特别是如果您使用可怕的#define ENABLE_LOG
#ifdef ENABLE_LOG
void log(const char *fmt, ...) {
va_list vargs;
va_start(vargs, fmt);
vfprintf(stderr, fmt, vargs);
va_end(vargs);
}
#else
#define log(fmt, ...)
#endif
-即使您的代码看起来像纯C。)