March 07, 2005 Template error only when windows.h is included | ||||
---|---|---|---|---|
| ||||
I was trying to create a function template using a Windows function. However I kept getting an error I didn't know how to resolve. This example is contrived, but it illustrates the error. I know DigitalMars didn't write windows.h, but I just started using DMC, so I was hoping someone has run across this before and knows of a solution. Here's the code: ##include <windows.h> ##include <iostream> #using namespace std; #template <typename T> #T max(T a, T b) #{ # return a > b ? a : b ; #} #int main(int argc, char *argv[]) #{ # cout << max(10, 15); # return 0; #} When I compile using the compile command: dmc Test20050307_1.cpp -Ic:\dm\stlport\stlport I get this error: Test20050307_1.cpp(7) : Error: closing ')' of '( declarator )' expected --- errorlevel 1 However, if you comment out windows.h, using the compile command above, it compiles clean. I'm just really confused, because the code looks correct to me. -Kramer |
March 08, 2005 Re: Template error only when windows.h is included | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kramer | On Mon, 7 Mar 2005 17:18:21 +0000 (UTC), Kramer wrote: > I was trying to create a function template using a Windows function. However I kept getting an error I didn't know how to resolve. This example is contrived, but it illustrates the error. I know DigitalMars didn't write windows.h, but I just started using DMC, so I was hoping someone has run across this before and knows of a solution. > > Here's the code: > ##include <windows.h> > ##include <iostream> > > #using namespace std; > > #template <typename T> > #T max(T a, T b) > #{ > # return a > b ? a : b ; > #} I believe windows.h defines "max" as a macro (unless you compile with -DNOMINMAX) bye, Christof -- http://cmeerw.org mailto:cmeerw at web.de xmpp:cmeerw at cmeerw.org ...and what have you contributed to the Net? |
Copyright © 1999-2021 by the D Language Foundation