The way it was used was as follows: The original resource compiler preprocessor (RCPP.EXE) had to be renamed to _RCPP.EXE, and the Qualitas RCPPP.EXE need to be copied to RCPP.EXE. Qualitas wrote a tool called RCPPP, called a “RCPP postprocessor”. A Quality Hackįor building 386MAX, Qualitas solved the problem in a manner that is as clever as it is dirty. The upshot is that if the resource compiler expects a string, it must be supplied with a single string literal, because multiple consecutive string literals will not be merged. Again we may wonder why not, but the fact is that it doesn’t. The catch is that although the resource compiler (RC.EXE) uses a preprocessor (RCPP.EXE) which is essentially identical to a C compiler preprocessor (in fact almost certainly built from the same source code), a C preprocessor does not perform string literal merging. We may wonder why not, but the fact is that it doesn’t. String literals are merged together, thus the following are equivalent: 'Hello' ' ' 'World'īut that does not happen in the resource compiler. Only that doesn’t quite work in the resource compiler. Something like this: LTEXT 'Qualitas 386MAX\nVersion ' '8' '.' '03',-1, 12,7,112,17įor obvious reasons, the authors wanted to automatically update the strings with the current version numbers, and used macros to build those strings. The problem is dialog text labels composed of multiple strings. The resource compiler does not like something