The problem is that MSVC ++ does something non-standard (and contrary to its own documentation) when it is configured to create debugging information for its โchange and continueโ function, and that this non-standard violates the way __LINE__ used in Simon Tatham Macros coroutine.
Here's what PuTTY source code says about this comment:
In particular, if you are getting `case expression not constant' errors when building with MS Visual Studio, this is because MS's Edit and Continue debugging feature causes their compiler to violate ANSI C. To disable Edit and Continue debugging: - right-click ssh.c in the FileView - click Settings - select the C/C++ tab and the General category - under `Debug info:', select anything _other_ than `Program Database for Edit and Continue'.
So you have to do it. (Actually, I know that you already did this because we discussed this in the comments before I posted this answer :-).)
source share