我声明了宏,这将使复制写入文件逻辑的操作变得容易
我最终收到错误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

10-06 02:04