FIX: Error Using Inline Assembly in a Template Class (136594)
The information in this article applies to:
- Microsoft Visual C++, 32-bit Professional Edition 2.0
- Microsoft Visual C++, 32-bit Professional Edition 2.1
- Microsoft Visual C++, 32-bit Professional Edition 2.2
This article was previously published under Q136594 SYMPTOMS
If inline assembly is used in an inline member function defined within
a templated class, the compiler generates these errors:
If the assembly instruction is of the form _asm { int 3 }:
error C2304: '<template class instance> }' : unexpected tokens
following type
fatal error C1004: unexpected end of file found.
If the assembly instruction is of the form _asm int 3:
fatal error C1075: end of file found before the left <Unknown>
at <filename line number> was matched.
The type of error depends on whether the assembly instruction is enclosed
in braces or not.
NOTE: The same error occurs for macros like ASSERT and VERIFY, which expand
to an _asm {int 3} instruction.
RESOLUTION
Define the member function outside the templated class using the "inline"
keyword.
STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed
at the beginning of this article. This bug was corrected in Microsoft
Visual C++, 32-bit Edition, version 4.0.
Modification Type: | Minor | Last Reviewed: | 7/5/2005 |
---|
Keywords: | kbbug kbCompiler kbCPPonly kbfix KB136594 |
---|
|