PRB: /Tp and /Tc Show Unexpected Behavior with WildcardsLast reviewed: August 12, 1997Article ID: Q85498 |
The information in this article applies to:
SUMMARYWhen compiling multiple .CPP or .CXX files using a wildcard syntax and the /Tc command line option, for example
cl /Tc *.cppthe C compiler is invoked only for the first source file matching the wildcard specification. For all subsequent files, the C++ compiler is invoked. The inverse is also true. That is, when compiling multiple .C files using a wildcard syntax and the /Tp command line option, the C++ compiler is invoked only for the first file; for all subsequent files, the C compiler is invoked.
CAUSEThis behavior is by design. As stated in the online and hard copy documentation for Microsoft C/C++ version 7.0 and all versions of Microsoft Visual C++ 16- and 32-bit Editions, the following is the correct syntax for the /Tc and /Tp command line options:
/Tc<filename> -or- /Tc <filename> /Tp<filename> -or- /Tp <filename>Each option refers to only one source file. Therefore, the first file matching the wildcard specification will be compiled as directed by the corresponding /T? option. All other files matching the wildcard will be compiled in accordance with their extension. (The C compiler is invoked for .C files, the C++ compiler for .CPP or .CXX files.)
MORE INFORMATIONThe following are two possible workarounds for the potential inconvenience presented by this behavior:
Sample CodeIf you wish to compile file1.c, file2.c and file3.c with the C++ compiler and link them to create exefile.exe, use the following makefile:
.c.obj: cl /c /Tp $< exefile.exe : file1.obj file2.obj file3.obj link $**, exefile.exe; |
Additional query words: 8.00 8.00c 9.00
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |