BUG: Function Style Conversion Incorrectly Generates ErrorsLast reviewed: July 24, 1997Article ID: Q115705 |
The information in this article applies to:
SYMPTOMSWhen calling a class conversion function within a macro, as shown in the code below, the compiler may incorrectly generate the following errors:
error C2061: syntax error : identifier 'timeVal' error C2066: cast to function type is illegal error C2059: syntax error : ')' RESOLUTIONFollowing are two possible workarounds for this problem:
STATUSMicrosoft has confirmed this to be a bug in the products listed at the beginning of this article. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.
MORE INFORMATIONThe following sample code demonstrates this problem.
Sample Code
/* Compile options needed: /c */ typedef unsigned short WORD; typedef unsigned long DWORD; #define LONG long #define MAKELONG(low, high) ((LONG)(((WORD)(low)) | \ (((DWORD)((WORD)(high))) << 16))) class CMyDate { public: operator WORD() { return m_wVal; } private: WORD m_wVal; }; class CMyTime { public: operator WORD() { return m_wVal; } private: WORD m_wVal; }; class CMyDateTime { CMyDateTime(CMyDate dateVal, CMyTime timeVal) { m_dwVal = MAKELONG(WORD(timeVal), WORD(dateVal)); // This call works in both, even though it is identical. m_dwVal= MAKELONG(timeVal.operator WORD(), dateVal.operator WORD()); } private: DWORD m_dwVal; }; |
Additional query words: 8.00 8.00c 9.00
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |