我声明了宏,这将使复制写入文件逻辑的操作变得容易
我最终收到错误C2065:'flog':未声明的标识符。
但是我没有得到log_buffer的错误。
我正在使用Visual Studios 2008 IDE。
我究竟做错了什么?
#ifndef ERROR_LOG_MACRO
#define ERROR_LOG_MACRO 1
#define SETERRORPARAMS char log_buffer[MAX_PATH]; \
char flog[MAX_PATH]; \
FILE *err_log_fp;
/*
Arguments: x (Name of the File)
y (File Path without the Filename)
z (Mode)
*/
#define OPENFILE(x,y,z) strcpy(flog,y); \
strcat(flog,"\\"); \
strcat(flog,x); \
err_log_fp = fopen(flog, z);
#define WRITELOG(x) if(err_log_fp) \
fwrite(log_buffer, sizeof(char), strlen(log_buffer), err_log_fp);
#define CLOSEFILE if(err_log_fp) \
fclose(err_log_fp);
#endif
我什至试着做
#define OPENFILE(x,y,z) SETERRORPARAMS \
... \
但是,即使这样也不起作用。
最佳答案
在宏的第一行之后,您可能会有尾随空格:
#define SETERRORPARAMS char log_buffer[MAX_PATH]; \______ <-- make sure you have no whitespaces
char flog[MAX_PATH]; \
FILE *err_log_fp;
要么,要么您不使用宏,并且在其他地方声明了
log_buffer
。