Judith, I did a quick verification with a Microsoft C++ compiler and I reproduced the compilation error:
[ Microsoft C++ compiler version 14 - FAILED ]
...
..\Test>cl.exe Main.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
Main.cpp
Main.cpp(4) : error C2059: syntax error : '('
...
Here is another verification with a legacy C++ compiler Turbo C++:
[ Turbo C++ compiler version 3 - SUCCESS ]
...
..\Test>tcc Main.cpp
Turbo C++ Version 3.00 Copyright (c) 1992 Borland International
main.cpp:
Warning main.cpp 9: Parameter 'argc' is never used in function main(int,char * *)
Warning main.cpp 9: Parameter 'argv' is never used in function main(int,char * *)
Turbo Link Version 5.0 Copyright (c) 1992 Borland International
Available memory 4124672
...
I see that Intel and Microsoft C++ compilers have bugs and I agree that as a workaround brackets need to be removed in the #define statement with ##.
Judith, I did a quick verification with a Microsoft C++ compiler and I reproduced the compilation error:
[ Microsoft C++ compiler version 14 - FAILED ]
...
..\Test>cl.exe Main.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
Main.cpp
Main.cpp(4) : error C2059: syntax error : '('
...
Here is another verification with a legacy C++ compiler Turbo C++:
[ Turbo C++ compiler version 3 - SUCCESS ]
...
..\Test>tcc Main.cpp
Turbo C++ Version 3.00 Copyright (c) 1992 Borland International
main.cpp:
Warning main.cpp 9: Parameter 'argc' is never used in function main(int,char * *)
Warning main.cpp 9: Parameter 'argv' is never used in function main(int,char * *)
Turbo Link Version 5.0 Copyright (c) 1992 Borland International
Available memory 4124672
...
I see that Intel and Microsoft C++ compilers have bugs and I agree that as a workaround brackets need to be removed in the #define statement with ##.