VC ++ 6.0 MFC - проблема с использованием макроса, определенного в

StackOverflow https://stackoverflow.com/questions/3455922

Вопрос

Я сталкиваюсь с странной проблемой. У меня есть файл, вызываемый, в котором я использую макрос, называемый «WM_USER», макрос определяется в другом файле заголовка. Теперь проблема в том, что когда я использую макрос в компиляторе, не распознает его. Это не тот случай, когда я не включал, потому что раньше у меня не было проблем, оно не было, из не где. Ниже приведена ошибка, которая отображается на компиляторе:

d:\project\project original\mirec2pc v1.0\gui\constants.h(26) : error C2065: 'WM_USER' : undeclared identifier
d:\project\project original\mirec2pc v1.0\gui\constants.h(26) : error C2057: expected constant expression
d:\project\project original\mirec2pc v1.0\gui\constants.h(27) : error C2057: expected constant expression
d:\project\project original\mirec2pc v1.0\gui\constants.h(28) : error C2057: expected constant expression
d:\project\project original\mirec2pc v1.0\gui\constants.h(29) : error C2057: expected constant expression
d:\project\project original\mirec2pc v1.0\gui\constants.h(30) : error C2057: expected constant expression
d:\project\project original\mirec2pc v1.0\gui\constants.h(31) : error C2057: expected constant expression
d:\project\project original\mirec2pc v1.0\gui\constants.h(32) : error C2057: expected constant expression
d:\project\project original\mirec2pc v1.0\gui\constants.h(33) : error C2057: expected constant expression
d:\project\project original\mirec2pc v1.0\gui\constants.h(34) : error C2057: expected constant expression
d:\project\project original\mirec2pc v1.0\gui\constants.h(35) : error C2057: expected constant expression
d:\project\project original\mirec2pc v1.0\gui\constants.h(36) : error C2057: expected constant expression
d:\project\project original\mirec2pc v1.0\gui\constants.h(37) : error C2057: expected constant expression
d:\project\project original\mirec2pc v1.0\gui\constants.h(38) : error C2057: expected constant expression
d:\project\project original\mirec2pc v1.0\gui\constants.h(39) : error C2057: expected constant expression
d:\project\project original\mirec2pc v1.0\gui\constants.h(40) : error C2057: expected constant expression

А вот мой кусок кода:

#ifndef CONSTANTS_H
#define CONSTANTS_H

#ifdef __cplusplus
extern "C"
{
#endif

#define SRCNAME_COL         0
#define REC_STATUS_COL      1
#define REC_TYPE_COL        2
#define REC_FILE_NAME_COL   3
#define REC_TIMER_COL       4


#define DLG_BK_COLOR RGB(220,228,236)
#define STATIC_BOX_BORDER_COLOR RGB(128,160,192)
#define STATIC_BOX_BORDER_DARK_COLOR RGB(83,126,200)
#define STATIC_BOX_BORDER_LIGHT_COLOR RGB(241,245,254)

#define MY_COMPUTER "My Computer"
#define FILE_NAME "\\transconf.txt"

enum
{
    WM_START_REC                = WM_USER + 100,
    WM_STOP_REC                 = WM_USER + 101,
    WM_RELOAD_SCHD              = WM_USER + 102,
    WM_CONFIG_RELOAD            = WM_USER + 103,
    WM_PROG_BAR_UPDATE          = WM_USER + 104,    //  MESSAGE TO UPDATE     THE PROGRESS BAR [10/3/2007 smkniazi]
    WM_GET_NEW_MP3_FILE         = WM_USER + 105,    //  MESSAGE TO GET NEW FILE NAME IN CASE OF FILE SPLITTING IN MP3 RECORDING
    WM_FILE_OPEN_FAILED         = WM_USER + 106,        //  MESSAGE TO MAIN GUI THAT FILE OPEN HAS FAILED IN THE MP4/MP4 FILE OPEN FUNCTION
    WM_GET_NEW_AAC_FILE         = WM_USER + 107,
    WM_GET_NEW_WAV_FILE         = WM_USER + 108,
    WM_FILENAME_CHANGED         = WM_USER + 109,
    WM_UPDATE_FILE_PATH         = WM_USER + 110,
    WM_START_STREAM             = WM_USER + 111,
    WM_UPDATE_IRECORD_LIST      = WM_USER + 150,
    WM_UPDATE_IREC_STATUS_COL   = WM_USER + 151,
    WM_CLOSE_QT_WINDOW          = WM_USER + 152,
};    


#define COMBO_COMPARISON_CHAR               '-'
#define H264_GENERIC_MP4_HEADING            "--MP4 Generic--"
#define H264_DEVICE_SPFIC_HEADING           "--Device Specific--"
#define AUDIO_ONLY_HEADING                  "--Audio Only Recording--"
#define TS_MUX_HEADING                      "--Transport     Stream--"
#define H264_QVGA_MP_AT_420Kbps_STR         "    QVGA MP@420Kbps"
#define H264_QVGA_STR                       "    QVGA (320*240)"
#define H264_VGA_STR                        "    VGA (640*480)"
#define H264_D1_STR                         "    Full D1 (720*480/576)"
#define H264_PSP_Native_STR                 "    PSP Native"
#define H264_iPhone_IPODTOUCH_Native_STR    "    iPhone/iPod Touch Native"
#define H264_PSP_QVGA_STR                   "    PSP QVGA"
#define H264_IPOD_QVGA                      "    iPod QVGA"
#define H264_IPOD_VGA                       "    iPod VGA"
#define H264_PS3_STR                        "    Apple TV/PS3"
#define H264_XBOX_360_STR                   "    XBOX 360"
#define MP3_REC_STR                         "    MP3 Audio"
#define AAC_REC_STR                         "    AAC Audio"
#define WAV_REC_STR                         "    WAV Audio"
#define FLAC_REC_STR                        "    FLAC Audio"
#define TS_MUX_QVGA_STR                     "    TSMux QVGA (320*240)"
#define TS_MUX_VGA_STR                      "    TSMux VGA  (640*480)"
#define TS_MUX_FULLD1_STR                   "    TSMux FULL D1 (720*480/576)"


#define WM_UPDATE_FILE_PROG_BAR     WM_USER+200
#define WM_EDIT_COL_UPDATED         WM_USER+201
#define WM_UPDATE_REMOVABLE_DRIVES  WM_USER+202

#ifdef __cplusplus
}
#endif

#endif
Это было полезно?

Решение

У вас нет #include В вашем заголовке, так что это ожидается. В случае, если ваши константы включены в файл, который включает в себя заголовок с WM_USER Определение, ваш код может компилировать. Но ИМО всегда лучше делать явные включения.

Во всяком случае, просто #include <winuser.h> или поскольку WM_USER это постоянная, добавьте это на верхнюю часть вашего заголовка

#ifndef WM_USER
#define WM_USER                         0x0400
#endif

Ваше здоровье.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top