Article: Q62182
Product(s): See article
Version(s): 6.00 | 6.00
Operating System(s): MS-DOS | OS/2
Keyword(s): ENDUSER | buglist6.00 | mspl13_c
Last Modified: 17-JUL-1990
The C4058 warning message can be generated in error if the /qc switch
(quick compile) is used. If the warning disappears after the /qc
switch is removed, the warning can be ignored.
Sample Code
-----------
1. #include <math.h>
2.
3. void main (void) ;
4.
5. void main (void)
6. {
7. double a ;
8.
9. a = cos (3.2) ;
10. a = sin (2.2) ;
11. a = atan (5.0) ;
12. }
Compile with the following options:
cl /c /qc /W4 /Alfw fpburgr.c
The following warning is given on the three assignment statements that
reference "a":
Warning C4058: address of automatic (local) variable taken, DS != SS
The /Alfw switch (used in multithreaded programs, dynamic link
libraries, and Windows programming), instructs the compiler to assume
DS != SS with DS fixed. Typically, this warning will come about when a
program de-references a near pointer that is automatic (local). In this
case, the warning is invalid.
The following are two different ways of working around the problem:
1. Compile with /Alfu. This assumes that DS != SS, and causes DS to be
reloaded upon function entry.
2. Turn off the /qc compile option.
Microsoft has confirmed this to be a problem with C version 6.00. We
are researching this problem and will post new information here as it
becomes available.