]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/doc/trouble.texi
Remove obsolete Tru64 UNIX V5.1B support
[thirdparty/gcc.git] / gcc / doc / trouble.texi
1 @c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
2 @c 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012
3 @c Free Software Foundation, Inc.
4 @c This is part of the GCC manual.
5 @c For copying conditions, see the file gcc.texi.
6
7 @node Trouble
8 @chapter Known Causes of Trouble with GCC
9 @cindex bugs, known
10 @cindex installation trouble
11 @cindex known causes of trouble
12
13 This section describes known problems that affect users of GCC@. Most
14 of these are not GCC bugs per se---if they were, we would fix them.
15 But the result for a user may be like the result of a bug.
16
17 Some of these problems are due to bugs in other software, some are
18 missing features that are too much work to add, and some are places
19 where people's opinions differ as to what is best.
20
21 @menu
22 * Actual Bugs:: Bugs we will fix later.
23 * Interoperation:: Problems using GCC with other compilers,
24 and with certain linkers, assemblers and debuggers.
25 * Incompatibilities:: GCC is incompatible with traditional C.
26 * Fixed Headers:: GCC uses corrected versions of system header files.
27 This is necessary, but doesn't always work smoothly.
28 * Standard Libraries:: GCC uses the system C library, which might not be
29 compliant with the ISO C standard.
30 * Disappointments:: Regrettable things we can't change, but not quite bugs.
31 * C++ Misunderstandings:: Common misunderstandings with GNU C++.
32 * Non-bugs:: Things we think are right, but some others disagree.
33 * Warnings and Errors:: Which problems in your code get warnings,
34 and which get errors.
35 @end menu
36
37 @node Actual Bugs
38 @section Actual Bugs We Haven't Fixed Yet
39
40 @itemize @bullet
41 @item
42 The @code{fixincludes} script interacts badly with automounters; if the
43 directory of system header files is automounted, it tends to be
44 unmounted while @code{fixincludes} is running. This would seem to be a
45 bug in the automounter. We don't know any good way to work around it.
46 @end itemize
47
48 @node Interoperation
49 @section Interoperation
50
51 This section lists various difficulties encountered in using GCC
52 together with other compilers or with the assemblers, linkers,
53 libraries and debuggers on certain systems.
54
55 @itemize @bullet
56 @item
57 On many platforms, GCC supports a different ABI for C++ than do other
58 compilers, so the object files compiled by GCC cannot be used with object
59 files generated by another C++ compiler.
60
61 An area where the difference is most apparent is name mangling. The use
62 of different name mangling is intentional, to protect you from more subtle
63 problems.
64 Compilers differ as to many internal details of C++ implementation,
65 including: how class instances are laid out, how multiple inheritance is
66 implemented, and how virtual function calls are handled. If the name
67 encoding were made the same, your programs would link against libraries
68 provided from other compilers---but the programs would then crash when
69 run. Incompatible libraries are then detected at link time, rather than
70 at run time.
71
72 @item
73 On some BSD systems, including some versions of Ultrix, use of profiling
74 causes static variable destructors (currently used only in C++) not to
75 be run.
76
77 @item
78 On some SGI systems, when you use @option{-lgl_s} as an option,
79 it gets translated magically to @samp{-lgl_s -lX11_s -lc_s}.
80 Naturally, this does not happen when you use GCC@.
81 You must specify all three options explicitly.
82
83 @item
84 On a SPARC, GCC aligns all values of type @code{double} on an 8-byte
85 boundary, and it expects every @code{double} to be so aligned. The Sun
86 compiler usually gives @code{double} values 8-byte alignment, with one
87 exception: function arguments of type @code{double} may not be aligned.
88
89 As a result, if a function compiled with Sun CC takes the address of an
90 argument of type @code{double} and passes this pointer of type
91 @code{double *} to a function compiled with GCC, dereferencing the
92 pointer may cause a fatal signal.
93
94 One way to solve this problem is to compile your entire program with GCC@.
95 Another solution is to modify the function that is compiled with
96 Sun CC to copy the argument into a local variable; local variables
97 are always properly aligned. A third solution is to modify the function
98 that uses the pointer to dereference it via the following function
99 @code{access_double} instead of directly with @samp{*}:
100
101 @smallexample
102 inline double
103 access_double (double *unaligned_ptr)
104 @{
105 union d2i @{ double d; int i[2]; @};
106
107 union d2i *p = (union d2i *) unaligned_ptr;
108 union d2i u;
109
110 u.i[0] = p->i[0];
111 u.i[1] = p->i[1];
112
113 return u.d;
114 @}
115 @end smallexample
116
117 @noindent
118 Storing into the pointer can be done likewise with the same union.
119
120 @item
121 On Solaris, the @code{malloc} function in the @file{libmalloc.a} library
122 may allocate memory that is only 4 byte aligned. Since GCC on the
123 SPARC assumes that doubles are 8 byte aligned, this may result in a
124 fatal signal if doubles are stored in memory allocated by the
125 @file{libmalloc.a} library.
126
127 The solution is to not use the @file{libmalloc.a} library. Use instead
128 @code{malloc} and related functions from @file{libc.a}; they do not have
129 this problem.
130
131 @item
132 On the HP PA machine, ADB sometimes fails to work on functions compiled
133 with GCC@. Specifically, it fails to work on functions that use
134 @code{alloca} or variable-size arrays. This is because GCC doesn't
135 generate HP-UX unwind descriptors for such functions. It may even be
136 impossible to generate them.
137
138 @item
139 Debugging (@option{-g}) is not supported on the HP PA machine, unless you use
140 the preliminary GNU tools.
141
142 @item
143 Taking the address of a label may generate errors from the HP-UX
144 PA assembler. GAS for the PA does not have this problem.
145
146 @item
147 Using floating point parameters for indirect calls to static functions
148 will not work when using the HP assembler. There simply is no way for GCC
149 to specify what registers hold arguments for static functions when using
150 the HP assembler. GAS for the PA does not have this problem.
151
152 @item
153 In extremely rare cases involving some very large functions you may
154 receive errors from the HP linker complaining about an out of bounds
155 unconditional branch offset. This used to occur more often in previous
156 versions of GCC, but is now exceptionally rare. If you should run
157 into it, you can work around by making your function smaller.
158
159 @item
160 GCC compiled code sometimes emits warnings from the HP-UX assembler of
161 the form:
162
163 @smallexample
164 (warning) Use of GR3 when
165 frame >= 8192 may cause conflict.
166 @end smallexample
167
168 These warnings are harmless and can be safely ignored.
169
170 @item
171 In extremely rare cases involving some very large functions you may
172 receive errors from the AIX Assembler complaining about a displacement
173 that is too large. If you should run into it, you can work around by
174 making your function smaller.
175
176 @item
177 The @file{libstdc++.a} library in GCC relies on the SVR4 dynamic
178 linker semantics which merges global symbols between libraries and
179 applications, especially necessary for C++ streams functionality.
180 This is not the default behavior of AIX shared libraries and dynamic
181 linking. @file{libstdc++.a} is built on AIX with ``runtime-linking''
182 enabled so that symbol merging can occur. To utilize this feature,
183 the application linked with @file{libstdc++.a} must include the
184 @option{-Wl,-brtl} flag on the link line. G++ cannot impose this
185 because this option may interfere with the semantics of the user
186 program and users may not always use @samp{g++} to link his or her
187 application. Applications are not required to use the
188 @option{-Wl,-brtl} flag on the link line---the rest of the
189 @file{libstdc++.a} library which is not dependent on the symbol
190 merging semantics will continue to function correctly.
191
192 @item
193 An application can interpose its own definition of functions for
194 functions invoked by @file{libstdc++.a} with ``runtime-linking''
195 enabled on AIX@. To accomplish this the application must be linked
196 with ``runtime-linking'' option and the functions explicitly must be
197 exported by the application (@option{-Wl,-brtl,-bE:exportfile}).
198
199 @item
200 AIX on the RS/6000 provides support (NLS) for environments outside of
201 the United States. Compilers and assemblers use NLS to support
202 locale-specific representations of various objects including
203 floating-point numbers (@samp{.} vs @samp{,} for separating decimal
204 fractions). There have been problems reported where the library linked
205 with GCC does not produce the same floating-point formats that the
206 assembler accepts. If you have this problem, set the @env{LANG}
207 environment variable to @samp{C} or @samp{En_US}.
208
209 @item
210 @opindex fdollars-in-identifiers
211 Even if you specify @option{-fdollars-in-identifiers},
212 you cannot successfully use @samp{$} in identifiers on the RS/6000 due
213 to a restriction in the IBM assembler. GAS supports these
214 identifiers.
215
216 @end itemize
217
218 @node Incompatibilities
219 @section Incompatibilities of GCC
220 @cindex incompatibilities of GCC
221 @opindex traditional
222
223 There are several noteworthy incompatibilities between GNU C and K&R
224 (non-ISO) versions of C@.
225
226 @itemize @bullet
227 @cindex string constants
228 @cindex read-only strings
229 @cindex shared strings
230 @item
231 GCC normally makes string constants read-only. If several
232 identical-looking string constants are used, GCC stores only one
233 copy of the string.
234
235 @cindex @code{mktemp}, and constant strings
236 One consequence is that you cannot call @code{mktemp} with a string
237 constant argument. The function @code{mktemp} always alters the
238 string its argument points to.
239
240 @cindex @code{sscanf}, and constant strings
241 @cindex @code{fscanf}, and constant strings
242 @cindex @code{scanf}, and constant strings
243 Another consequence is that @code{sscanf} does not work on some very
244 old systems when passed a string constant as its format control string
245 or input. This is because @code{sscanf} incorrectly tries to write
246 into the string constant. Likewise @code{fscanf} and @code{scanf}.
247
248 The solution to these problems is to change the program to use
249 @code{char}-array variables with initialization strings for these
250 purposes instead of string constants.
251
252 @item
253 @code{-2147483648} is positive.
254
255 This is because 2147483648 cannot fit in the type @code{int}, so
256 (following the ISO C rules) its data type is @code{unsigned long int}.
257 Negating this value yields 2147483648 again.
258
259 @item
260 GCC does not substitute macro arguments when they appear inside of
261 string constants. For example, the following macro in GCC
262
263 @smallexample
264 #define foo(a) "a"
265 @end smallexample
266
267 @noindent
268 will produce output @code{"a"} regardless of what the argument @var{a} is.
269
270 @cindex @code{setjmp} incompatibilities
271 @cindex @code{longjmp} incompatibilities
272 @item
273 When you use @code{setjmp} and @code{longjmp}, the only automatic
274 variables guaranteed to remain valid are those declared
275 @code{volatile}. This is a consequence of automatic register
276 allocation. Consider this function:
277
278 @smallexample
279 jmp_buf j;
280
281 foo ()
282 @{
283 int a, b;
284
285 a = fun1 ();
286 if (setjmp (j))
287 return a;
288
289 a = fun2 ();
290 /* @r{@code{longjmp (j)} may occur in @code{fun3}.} */
291 return a + fun3 ();
292 @}
293 @end smallexample
294
295 Here @code{a} may or may not be restored to its first value when the
296 @code{longjmp} occurs. If @code{a} is allocated in a register, then
297 its first value is restored; otherwise, it keeps the last value stored
298 in it.
299
300 @opindex W
301 If you use the @option{-W} option with the @option{-O} option, you will
302 get a warning when GCC thinks such a problem might be possible.
303
304 @item
305 Programs that use preprocessing directives in the middle of macro
306 arguments do not work with GCC@. For example, a program like this
307 will not work:
308
309 @smallexample
310 @group
311 foobar (
312 #define luser
313 hack)
314 @end group
315 @end smallexample
316
317 ISO C does not permit such a construct.
318
319 @item
320 K&R compilers allow comments to cross over an inclusion boundary
321 (i.e.@: started in an include file and ended in the including file).
322
323 @cindex external declaration scope
324 @cindex scope of external declarations
325 @cindex declaration scope
326 @item
327 Declarations of external variables and functions within a block apply
328 only to the block containing the declaration. In other words, they
329 have the same scope as any other declaration in the same place.
330
331 In some other C compilers, an @code{extern} declaration affects all the
332 rest of the file even if it happens within a block.
333
334 @item
335 In traditional C, you can combine @code{long}, etc., with a typedef name,
336 as shown here:
337
338 @smallexample
339 typedef int foo;
340 typedef long foo bar;
341 @end smallexample
342
343 In ISO C, this is not allowed: @code{long} and other type modifiers
344 require an explicit @code{int}.
345
346 @cindex typedef names as function parameters
347 @item
348 PCC allows typedef names to be used as function parameters.
349
350 @item
351 Traditional C allows the following erroneous pair of declarations to
352 appear together in a given scope:
353
354 @smallexample
355 typedef int foo;
356 typedef foo foo;
357 @end smallexample
358
359 @item
360 GCC treats all characters of identifiers as significant. According to
361 K&R-1 (2.2), ``No more than the first eight characters are significant,
362 although more may be used.''. Also according to K&R-1 (2.2), ``An
363 identifier is a sequence of letters and digits; the first character must
364 be a letter. The underscore _ counts as a letter.'', but GCC also
365 allows dollar signs in identifiers.
366
367 @cindex whitespace
368 @item
369 PCC allows whitespace in the middle of compound assignment operators
370 such as @samp{+=}. GCC, following the ISO standard, does not
371 allow this.
372
373 @cindex apostrophes
374 @cindex @code{'}
375 @item
376 GCC complains about unterminated character constants inside of
377 preprocessing conditionals that fail. Some programs have English
378 comments enclosed in conditionals that are guaranteed to fail; if these
379 comments contain apostrophes, GCC will probably report an error. For
380 example, this code would produce an error:
381
382 @smallexample
383 #if 0
384 You can't expect this to work.
385 #endif
386 @end smallexample
387
388 The best solution to such a problem is to put the text into an actual
389 C comment delimited by @samp{/*@dots{}*/}.
390
391 @item
392 Many user programs contain the declaration @samp{long time ();}. In the
393 past, the system header files on many systems did not actually declare
394 @code{time}, so it did not matter what type your program declared it to
395 return. But in systems with ISO C headers, @code{time} is declared to
396 return @code{time_t}, and if that is not the same as @code{long}, then
397 @samp{long time ();} is erroneous.
398
399 The solution is to change your program to use appropriate system headers
400 (@code{<time.h>} on systems with ISO C headers) and not to declare
401 @code{time} if the system header files declare it, or failing that to
402 use @code{time_t} as the return type of @code{time}.
403
404 @cindex @code{float} as function value type
405 @item
406 When compiling functions that return @code{float}, PCC converts it to
407 a double. GCC actually returns a @code{float}. If you are concerned
408 with PCC compatibility, you should declare your functions to return
409 @code{double}; you might as well say what you mean.
410
411 @cindex structures
412 @cindex unions
413 @item
414 When compiling functions that return structures or unions, GCC
415 output code normally uses a method different from that used on most
416 versions of Unix. As a result, code compiled with GCC cannot call
417 a structure-returning function compiled with PCC, and vice versa.
418
419 The method used by GCC is as follows: a structure or union which is
420 1, 2, 4 or 8 bytes long is returned like a scalar. A structure or union
421 with any other size is stored into an address supplied by the caller
422 (usually in a special, fixed register, but on some machines it is passed
423 on the stack). The target hook @code{TARGET_STRUCT_VALUE_RTX}
424 tells GCC where to pass this address.
425
426 By contrast, PCC on most target machines returns structures and unions
427 of any size by copying the data into an area of static storage, and then
428 returning the address of that storage as if it were a pointer value.
429 The caller must copy the data from that memory area to the place where
430 the value is wanted. GCC does not use this method because it is
431 slower and nonreentrant.
432
433 On some newer machines, PCC uses a reentrant convention for all
434 structure and union returning. GCC on most of these machines uses a
435 compatible convention when returning structures and unions in memory,
436 but still returns small structures and unions in registers.
437
438 @opindex fpcc-struct-return
439 You can tell GCC to use a compatible convention for all structure and
440 union returning with the option @option{-fpcc-struct-return}.
441
442 @cindex preprocessing tokens
443 @cindex preprocessing numbers
444 @item
445 GCC complains about program fragments such as @samp{0x74ae-0x4000}
446 which appear to be two hexadecimal constants separated by the minus
447 operator. Actually, this string is a single @dfn{preprocessing token}.
448 Each such token must correspond to one token in C@. Since this does not,
449 GCC prints an error message. Although it may appear obvious that what
450 is meant is an operator and two values, the ISO C standard specifically
451 requires that this be treated as erroneous.
452
453 A @dfn{preprocessing token} is a @dfn{preprocessing number} if it
454 begins with a digit and is followed by letters, underscores, digits,
455 periods and @samp{e+}, @samp{e-}, @samp{E+}, @samp{E-}, @samp{p+},
456 @samp{p-}, @samp{P+}, or @samp{P-} character sequences. (In strict C90
457 mode, the sequences @samp{p+}, @samp{p-}, @samp{P+} and @samp{P-} cannot
458 appear in preprocessing numbers.)
459
460 To make the above program fragment valid, place whitespace in front of
461 the minus sign. This whitespace will end the preprocessing number.
462 @end itemize
463
464 @node Fixed Headers
465 @section Fixed Header Files
466
467 GCC needs to install corrected versions of some system header files.
468 This is because most target systems have some header files that won't
469 work with GCC unless they are changed. Some have bugs, some are
470 incompatible with ISO C, and some depend on special features of other
471 compilers.
472
473 Installing GCC automatically creates and installs the fixed header
474 files, by running a program called @code{fixincludes}. Normally, you
475 don't need to pay attention to this. But there are cases where it
476 doesn't do the right thing automatically.
477
478 @itemize @bullet
479 @item
480 If you update the system's header files, such as by installing a new
481 system version, the fixed header files of GCC are not automatically
482 updated. They can be updated using the @command{mkheaders} script
483 installed in
484 @file{@var{libexecdir}/gcc/@var{target}/@var{version}/install-tools/}.
485
486 @item
487 On some systems, header file directories contain
488 machine-specific symbolic links in certain places. This makes it
489 possible to share most of the header files among hosts running the
490 same version of the system on different machine models.
491
492 The programs that fix the header files do not understand this special
493 way of using symbolic links; therefore, the directory of fixed header
494 files is good only for the machine model used to build it.
495
496 It is possible to make separate sets of fixed header files for the
497 different machine models, and arrange a structure of symbolic links so
498 as to use the proper set, but you'll have to do this by hand.
499 @end itemize
500
501 @node Standard Libraries
502 @section Standard Libraries
503
504 @opindex Wall
505 GCC by itself attempts to be a conforming freestanding implementation.
506 @xref{Standards,,Language Standards Supported by GCC}, for details of
507 what this means. Beyond the library facilities required of such an
508 implementation, the rest of the C library is supplied by the vendor of
509 the operating system. If that C library doesn't conform to the C
510 standards, then your programs might get warnings (especially when using
511 @option{-Wall}) that you don't expect.
512
513 For example, the @code{sprintf} function on SunOS 4.1.3 returns
514 @code{char *} while the C standard says that @code{sprintf} returns an
515 @code{int}. The @code{fixincludes} program could make the prototype for
516 this function match the Standard, but that would be wrong, since the
517 function will still return @code{char *}.
518
519 If you need a Standard compliant library, then you need to find one, as
520 GCC does not provide one. The GNU C library (called @code{glibc})
521 provides ISO C, POSIX, BSD, SystemV and X/Open compatibility for
522 GNU/Linux and HURD-based GNU systems; no recent version of it supports
523 other systems, though some very old versions did. Version 2.2 of the
524 GNU C library includes nearly complete C99 support. You could also ask
525 your operating system vendor if newer libraries are available.
526
527 @node Disappointments
528 @section Disappointments and Misunderstandings
529
530 These problems are perhaps regrettable, but we don't know any practical
531 way around them.
532
533 @itemize @bullet
534 @item
535 Certain local variables aren't recognized by debuggers when you compile
536 with optimization.
537
538 This occurs because sometimes GCC optimizes the variable out of
539 existence. There is no way to tell the debugger how to compute the
540 value such a variable ``would have had'', and it is not clear that would
541 be desirable anyway. So GCC simply does not mention the eliminated
542 variable when it writes debugging information.
543
544 You have to expect a certain amount of disagreement between the
545 executable and your source code, when you use optimization.
546
547 @cindex conflicting types
548 @cindex scope of declaration
549 @item
550 Users often think it is a bug when GCC reports an error for code
551 like this:
552
553 @smallexample
554 int foo (struct mumble *);
555
556 struct mumble @{ @dots{} @};
557
558 int foo (struct mumble *x)
559 @{ @dots{} @}
560 @end smallexample
561
562 This code really is erroneous, because the scope of @code{struct
563 mumble} in the prototype is limited to the argument list containing it.
564 It does not refer to the @code{struct mumble} defined with file scope
565 immediately below---they are two unrelated types with similar names in
566 different scopes.
567
568 But in the definition of @code{foo}, the file-scope type is used
569 because that is available to be inherited. Thus, the definition and
570 the prototype do not match, and you get an error.
571
572 This behavior may seem silly, but it's what the ISO standard specifies.
573 It is easy enough for you to make your code work by moving the
574 definition of @code{struct mumble} above the prototype. It's not worth
575 being incompatible with ISO C just to avoid an error for the example
576 shown above.
577
578 @item
579 Accesses to bit-fields even in volatile objects works by accessing larger
580 objects, such as a byte or a word. You cannot rely on what size of
581 object is accessed in order to read or write the bit-field; it may even
582 vary for a given bit-field according to the precise usage.
583
584 If you care about controlling the amount of memory that is accessed, use
585 volatile but do not use bit-fields.
586
587 @item
588 GCC comes with shell scripts to fix certain known problems in system
589 header files. They install corrected copies of various header files in
590 a special directory where only GCC will normally look for them. The
591 scripts adapt to various systems by searching all the system header
592 files for the problem cases that we know about.
593
594 If new system header files are installed, nothing automatically arranges
595 to update the corrected header files. They can be updated using the
596 @command{mkheaders} script installed in
597 @file{@var{libexecdir}/gcc/@var{target}/@var{version}/install-tools/}.
598
599 @item
600 @cindex floating point precision
601 On 68000 and x86 systems, for instance, you can get paradoxical results
602 if you test the precise values of floating point numbers. For example,
603 you can find that a floating point value which is not a NaN is not equal
604 to itself. This results from the fact that the floating point registers
605 hold a few more bits of precision than fit in a @code{double} in memory.
606 Compiled code moves values between memory and floating point registers
607 at its convenience, and moving them into memory truncates them.
608
609 @opindex ffloat-store
610 You can partially avoid this problem by using the @option{-ffloat-store}
611 option (@pxref{Optimize Options}).
612
613 @item
614 On AIX and other platforms without weak symbol support, templates
615 need to be instantiated explicitly and symbols for static members
616 of templates will not be generated.
617
618 @item
619 On AIX, GCC scans object files and library archives for static
620 constructors and destructors when linking an application before the
621 linker prunes unreferenced symbols. This is necessary to prevent the
622 AIX linker from mistakenly assuming that static constructor or
623 destructor are unused and removing them before the scanning can occur.
624 All static constructors and destructors found will be referenced even
625 though the modules in which they occur may not be used by the program.
626 This may lead to both increased executable size and unexpected symbol
627 references.
628 @end itemize
629
630 @node C++ Misunderstandings
631 @section Common Misunderstandings with GNU C++
632
633 @cindex misunderstandings in C++
634 @cindex surprises in C++
635 @cindex C++ misunderstandings
636 C++ is a complex language and an evolving one, and its standard
637 definition (the ISO C++ standard) was only recently completed. As a
638 result, your C++ compiler may occasionally surprise you, even when its
639 behavior is correct. This section discusses some areas that frequently
640 give rise to questions of this sort.
641
642 @menu
643 * Static Definitions:: Static member declarations are not definitions
644 * Name lookup:: Name lookup, templates, and accessing members of base classes
645 * Temporaries:: Temporaries may vanish before you expect
646 * Copy Assignment:: Copy Assignment operators copy virtual bases twice
647 @end menu
648
649 @node Static Definitions
650 @subsection Declare @emph{and} Define Static Members
651
652 @cindex C++ static data, declaring and defining
653 @cindex static data in C++, declaring and defining
654 @cindex declaring static data in C++
655 @cindex defining static data in C++
656 When a class has static data members, it is not enough to @emph{declare}
657 the static member; you must also @emph{define} it. For example:
658
659 @smallexample
660 class Foo
661 @{
662 @dots{}
663 void method();
664 static int bar;
665 @};
666 @end smallexample
667
668 This declaration only establishes that the class @code{Foo} has an
669 @code{int} named @code{Foo::bar}, and a member function named
670 @code{Foo::method}. But you still need to define @emph{both}
671 @code{method} and @code{bar} elsewhere. According to the ISO
672 standard, you must supply an initializer in one (and only one) source
673 file, such as:
674
675 @smallexample
676 int Foo::bar = 0;
677 @end smallexample
678
679 Other C++ compilers may not correctly implement the standard behavior.
680 As a result, when you switch to @command{g++} from one of these compilers,
681 you may discover that a program that appeared to work correctly in fact
682 does not conform to the standard: @command{g++} reports as undefined
683 symbols any static data members that lack definitions.
684
685
686 @node Name lookup
687 @subsection Name lookup, templates, and accessing members of base classes
688
689 @cindex base class members
690 @cindex two-stage name lookup
691 @cindex dependent name lookup
692
693 The C++ standard prescribes that all names that are not dependent on
694 template parameters are bound to their present definitions when parsing
695 a template function or class.@footnote{The C++ standard just uses the
696 term ``dependent'' for names that depend on the type or value of
697 template parameters. This shorter term will also be used in the rest of
698 this section.} Only names that are dependent are looked up at the point
699 of instantiation. For example, consider
700
701 @smallexample
702 void foo(double);
703
704 struct A @{
705 template <typename T>
706 void f () @{
707 foo (1); // @r{1}
708 int i = N; // @r{2}
709 T t;
710 t.bar(); // @r{3}
711 foo (t); // @r{4}
712 @}
713
714 static const int N;
715 @};
716 @end smallexample
717
718 Here, the names @code{foo} and @code{N} appear in a context that does
719 not depend on the type of @code{T}. The compiler will thus require that
720 they are defined in the context of use in the template, not only before
721 the point of instantiation, and will here use @code{::foo(double)} and
722 @code{A::N}, respectively. In particular, it will convert the integer
723 value to a @code{double} when passing it to @code{::foo(double)}.
724
725 Conversely, @code{bar} and the call to @code{foo} in the fourth marked
726 line are used in contexts that do depend on the type of @code{T}, so
727 they are only looked up at the point of instantiation, and you can
728 provide declarations for them after declaring the template, but before
729 instantiating it. In particular, if you instantiate @code{A::f<int>},
730 the last line will call an overloaded @code{::foo(int)} if one was
731 provided, even if after the declaration of @code{struct A}.
732
733 This distinction between lookup of dependent and non-dependent names is
734 called two-stage (or dependent) name lookup. G++ implements it
735 since version 3.4.
736
737 Two-stage name lookup sometimes leads to situations with behavior
738 different from non-template codes. The most common is probably this:
739
740 @smallexample
741 template <typename T> struct Base @{
742 int i;
743 @};
744
745 template <typename T> struct Derived : public Base<T> @{
746 int get_i() @{ return i; @}
747 @};
748 @end smallexample
749
750 In @code{get_i()}, @code{i} is not used in a dependent context, so the
751 compiler will look for a name declared at the enclosing namespace scope
752 (which is the global scope here). It will not look into the base class,
753 since that is dependent and you may declare specializations of
754 @code{Base} even after declaring @code{Derived}, so the compiler can't
755 really know what @code{i} would refer to. If there is no global
756 variable @code{i}, then you will get an error message.
757
758 In order to make it clear that you want the member of the base class,
759 you need to defer lookup until instantiation time, at which the base
760 class is known. For this, you need to access @code{i} in a dependent
761 context, by either using @code{this->i} (remember that @code{this} is of
762 type @code{Derived<T>*}, so is obviously dependent), or using
763 @code{Base<T>::i}. Alternatively, @code{Base<T>::i} might be brought
764 into scope by a @code{using}-declaration.
765
766 Another, similar example involves calling member functions of a base
767 class:
768
769 @smallexample
770 template <typename T> struct Base @{
771 int f();
772 @};
773
774 template <typename T> struct Derived : Base<T> @{
775 int g() @{ return f(); @};
776 @};
777 @end smallexample
778
779 Again, the call to @code{f()} is not dependent on template arguments
780 (there are no arguments that depend on the type @code{T}, and it is also
781 not otherwise specified that the call should be in a dependent context).
782 Thus a global declaration of such a function must be available, since
783 the one in the base class is not visible until instantiation time. The
784 compiler will consequently produce the following error message:
785
786 @smallexample
787 x.cc: In member function `int Derived<T>::g()':
788 x.cc:6: error: there are no arguments to `f' that depend on a template
789 parameter, so a declaration of `f' must be available
790 x.cc:6: error: (if you use `-fpermissive', G++ will accept your code, but
791 allowing the use of an undeclared name is deprecated)
792 @end smallexample
793
794 To make the code valid either use @code{this->f()}, or
795 @code{Base<T>::f()}. Using the @option{-fpermissive} flag will also let
796 the compiler accept the code, by marking all function calls for which no
797 declaration is visible at the time of definition of the template for
798 later lookup at instantiation time, as if it were a dependent call.
799 We do not recommend using @option{-fpermissive} to work around invalid
800 code, and it will also only catch cases where functions in base classes
801 are called, not where variables in base classes are used (as in the
802 example above).
803
804 Note that some compilers (including G++ versions prior to 3.4) get these
805 examples wrong and accept above code without an error. Those compilers
806 do not implement two-stage name lookup correctly.
807
808
809 @node Temporaries
810 @subsection Temporaries May Vanish Before You Expect
811
812 @cindex temporaries, lifetime of
813 @cindex portions of temporary objects, pointers to
814 It is dangerous to use pointers or references to @emph{portions} of a
815 temporary object. The compiler may very well delete the object before
816 you expect it to, leaving a pointer to garbage. The most common place
817 where this problem crops up is in classes like string classes,
818 especially ones that define a conversion function to type @code{char *}
819 or @code{const char *}---which is one reason why the standard
820 @code{string} class requires you to call the @code{c_str} member
821 function. However, any class that returns a pointer to some internal
822 structure is potentially subject to this problem.
823
824 For example, a program may use a function @code{strfunc} that returns
825 @code{string} objects, and another function @code{charfunc} that
826 operates on pointers to @code{char}:
827
828 @smallexample
829 string strfunc ();
830 void charfunc (const char *);
831
832 void
833 f ()
834 @{
835 const char *p = strfunc().c_str();
836 @dots{}
837 charfunc (p);
838 @dots{}
839 charfunc (p);
840 @}
841 @end smallexample
842
843 @noindent
844 In this situation, it may seem reasonable to save a pointer to the C
845 string returned by the @code{c_str} member function and use that rather
846 than call @code{c_str} repeatedly. However, the temporary string
847 created by the call to @code{strfunc} is destroyed after @code{p} is
848 initialized, at which point @code{p} is left pointing to freed memory.
849
850 Code like this may run successfully under some other compilers,
851 particularly obsolete cfront-based compilers that delete temporaries
852 along with normal local variables. However, the GNU C++ behavior is
853 standard-conforming, so if your program depends on late destruction of
854 temporaries it is not portable.
855
856 The safe way to write such code is to give the temporary a name, which
857 forces it to remain until the end of the scope of the name. For
858 example:
859
860 @smallexample
861 const string& tmp = strfunc ();
862 charfunc (tmp.c_str ());
863 @end smallexample
864
865 @node Copy Assignment
866 @subsection Implicit Copy-Assignment for Virtual Bases
867
868 When a base class is virtual, only one subobject of the base class
869 belongs to each full object. Also, the constructors and destructors are
870 invoked only once, and called from the most-derived class. However, such
871 objects behave unspecified when being assigned. For example:
872
873 @smallexample
874 struct Base@{
875 char *name;
876 Base(char *n) : name(strdup(n))@{@}
877 Base& operator= (const Base& other)@{
878 free (name);
879 name = strdup (other.name);
880 @}
881 @};
882
883 struct A:virtual Base@{
884 int val;
885 A():Base("A")@{@}
886 @};
887
888 struct B:virtual Base@{
889 int bval;
890 B():Base("B")@{@}
891 @};
892
893 struct Derived:public A, public B@{
894 Derived():Base("Derived")@{@}
895 @};
896
897 void func(Derived &d1, Derived &d2)
898 @{
899 d1 = d2;
900 @}
901 @end smallexample
902
903 The C++ standard specifies that @samp{Base::Base} is only called once
904 when constructing or copy-constructing a Derived object. It is
905 unspecified whether @samp{Base::operator=} is called more than once when
906 the implicit copy-assignment for Derived objects is invoked (as it is
907 inside @samp{func} in the example).
908
909 G++ implements the ``intuitive'' algorithm for copy-assignment: assign all
910 direct bases, then assign all members. In that algorithm, the virtual
911 base subobject can be encountered more than once. In the example, copying
912 proceeds in the following order: @samp{val}, @samp{name} (via
913 @code{strdup}), @samp{bval}, and @samp{name} again.
914
915 If application code relies on copy-assignment, a user-defined
916 copy-assignment operator removes any uncertainties. With such an
917 operator, the application can define whether and how the virtual base
918 subobject is assigned.
919
920 @node Non-bugs
921 @section Certain Changes We Don't Want to Make
922
923 This section lists changes that people frequently request, but which
924 we do not make because we think GCC is better without them.
925
926 @itemize @bullet
927 @item
928 Checking the number and type of arguments to a function which has an
929 old-fashioned definition and no prototype.
930
931 Such a feature would work only occasionally---only for calls that appear
932 in the same file as the called function, following the definition. The
933 only way to check all calls reliably is to add a prototype for the
934 function. But adding a prototype eliminates the motivation for this
935 feature. So the feature is not worthwhile.
936
937 @item
938 Warning about using an expression whose type is signed as a shift count.
939
940 Shift count operands are probably signed more often than unsigned.
941 Warning about this would cause far more annoyance than good.
942
943 @item
944 Warning about assigning a signed value to an unsigned variable.
945
946 Such assignments must be very common; warning about them would cause
947 more annoyance than good.
948
949 @item
950 Warning when a non-void function value is ignored.
951
952 C contains many standard functions that return a value that most
953 programs choose to ignore. One obvious example is @code{printf}.
954 Warning about this practice only leads the defensive programmer to
955 clutter programs with dozens of casts to @code{void}. Such casts are
956 required so frequently that they become visual noise. Writing those
957 casts becomes so automatic that they no longer convey useful
958 information about the intentions of the programmer. For functions
959 where the return value should never be ignored, use the
960 @code{warn_unused_result} function attribute (@pxref{Function
961 Attributes}).
962
963 @item
964 @opindex fshort-enums
965 Making @option{-fshort-enums} the default.
966
967 This would cause storage layout to be incompatible with most other C
968 compilers. And it doesn't seem very important, given that you can get
969 the same result in other ways. The case where it matters most is when
970 the enumeration-valued object is inside a structure, and in that case
971 you can specify a field width explicitly.
972
973 @item
974 Making bit-fields unsigned by default on particular machines where ``the
975 ABI standard'' says to do so.
976
977 The ISO C standard leaves it up to the implementation whether a bit-field
978 declared plain @code{int} is signed or not. This in effect creates two
979 alternative dialects of C@.
980
981 @opindex fsigned-bitfields
982 @opindex funsigned-bitfields
983 The GNU C compiler supports both dialects; you can specify the signed
984 dialect with @option{-fsigned-bitfields} and the unsigned dialect with
985 @option{-funsigned-bitfields}. However, this leaves open the question of
986 which dialect to use by default.
987
988 Currently, the preferred dialect makes plain bit-fields signed, because
989 this is simplest. Since @code{int} is the same as @code{signed int} in
990 every other context, it is cleanest for them to be the same in bit-fields
991 as well.
992
993 Some computer manufacturers have published Application Binary Interface
994 standards which specify that plain bit-fields should be unsigned. It is
995 a mistake, however, to say anything about this issue in an ABI@. This is
996 because the handling of plain bit-fields distinguishes two dialects of C@.
997 Both dialects are meaningful on every type of machine. Whether a
998 particular object file was compiled using signed bit-fields or unsigned
999 is of no concern to other object files, even if they access the same
1000 bit-fields in the same data structures.
1001
1002 A given program is written in one or the other of these two dialects.
1003 The program stands a chance to work on most any machine if it is
1004 compiled with the proper dialect. It is unlikely to work at all if
1005 compiled with the wrong dialect.
1006
1007 Many users appreciate the GNU C compiler because it provides an
1008 environment that is uniform across machines. These users would be
1009 inconvenienced if the compiler treated plain bit-fields differently on
1010 certain machines.
1011
1012 Occasionally users write programs intended only for a particular machine
1013 type. On these occasions, the users would benefit if the GNU C compiler
1014 were to support by default the same dialect as the other compilers on
1015 that machine. But such applications are rare. And users writing a
1016 program to run on more than one type of machine cannot possibly benefit
1017 from this kind of compatibility.
1018
1019 This is why GCC does and will treat plain bit-fields in the same
1020 fashion on all types of machines (by default).
1021
1022 There are some arguments for making bit-fields unsigned by default on all
1023 machines. If, for example, this becomes a universal de facto standard,
1024 it would make sense for GCC to go along with it. This is something
1025 to be considered in the future.
1026
1027 (Of course, users strongly concerned about portability should indicate
1028 explicitly in each bit-field whether it is signed or not. In this way,
1029 they write programs which have the same meaning in both C dialects.)
1030
1031 @item
1032 @opindex ansi
1033 @opindex std
1034 Undefining @code{__STDC__} when @option{-ansi} is not used.
1035
1036 Currently, GCC defines @code{__STDC__} unconditionally. This provides
1037 good results in practice.
1038
1039 Programmers normally use conditionals on @code{__STDC__} to ask whether
1040 it is safe to use certain features of ISO C, such as function
1041 prototypes or ISO token concatenation. Since plain @command{gcc} supports
1042 all the features of ISO C, the correct answer to these questions is
1043 ``yes''.
1044
1045 Some users try to use @code{__STDC__} to check for the availability of
1046 certain library facilities. This is actually incorrect usage in an ISO
1047 C program, because the ISO C standard says that a conforming
1048 freestanding implementation should define @code{__STDC__} even though it
1049 does not have the library facilities. @samp{gcc -ansi -pedantic} is a
1050 conforming freestanding implementation, and it is therefore required to
1051 define @code{__STDC__}, even though it does not come with an ISO C
1052 library.
1053
1054 Sometimes people say that defining @code{__STDC__} in a compiler that
1055 does not completely conform to the ISO C standard somehow violates the
1056 standard. This is illogical. The standard is a standard for compilers
1057 that claim to support ISO C, such as @samp{gcc -ansi}---not for other
1058 compilers such as plain @command{gcc}. Whatever the ISO C standard says
1059 is relevant to the design of plain @command{gcc} without @option{-ansi} only
1060 for pragmatic reasons, not as a requirement.
1061
1062 GCC normally defines @code{__STDC__} to be 1, and in addition
1063 defines @code{__STRICT_ANSI__} if you specify the @option{-ansi} option,
1064 or a @option{-std} option for strict conformance to some version of ISO C@.
1065 On some hosts, system include files use a different convention, where
1066 @code{__STDC__} is normally 0, but is 1 if the user specifies strict
1067 conformance to the C Standard. GCC follows the host convention when
1068 processing system include files, but when processing user files it follows
1069 the usual GNU C convention.
1070
1071 @item
1072 Undefining @code{__STDC__} in C++.
1073
1074 Programs written to compile with C++-to-C translators get the
1075 value of @code{__STDC__} that goes with the C compiler that is
1076 subsequently used. These programs must test @code{__STDC__}
1077 to determine what kind of C preprocessor that compiler uses:
1078 whether they should concatenate tokens in the ISO C fashion
1079 or in the traditional fashion.
1080
1081 These programs work properly with GNU C++ if @code{__STDC__} is defined.
1082 They would not work otherwise.
1083
1084 In addition, many header files are written to provide prototypes in ISO
1085 C but not in traditional C@. Many of these header files can work without
1086 change in C++ provided @code{__STDC__} is defined. If @code{__STDC__}
1087 is not defined, they will all fail, and will all need to be changed to
1088 test explicitly for C++ as well.
1089
1090 @item
1091 Deleting ``empty'' loops.
1092
1093 Historically, GCC has not deleted ``empty'' loops under the
1094 assumption that the most likely reason you would put one in a program is
1095 to have a delay, so deleting them will not make real programs run any
1096 faster.
1097
1098 However, the rationale here is that optimization of a nonempty loop
1099 cannot produce an empty one. This held for carefully written C compiled
1100 with less powerful optimizers but is not always the case for carefully
1101 written C++ or with more powerful optimizers.
1102 Thus GCC will remove operations from loops whenever it can determine
1103 those operations are not externally visible (apart from the time taken
1104 to execute them, of course). In case the loop can be proved to be finite,
1105 GCC will also remove the loop itself.
1106
1107 Be aware of this when performing timing tests, for instance the
1108 following loop can be completely removed, provided
1109 @code{some_expression} can provably not change any global state.
1110
1111 @smallexample
1112 @{
1113 int sum = 0;
1114 int ix;
1115
1116 for (ix = 0; ix != 10000; ix++)
1117 sum += some_expression;
1118 @}
1119 @end smallexample
1120
1121 Even though @code{sum} is accumulated in the loop, no use is made of
1122 that summation, so the accumulation can be removed.
1123
1124 @item
1125 Making side effects happen in the same order as in some other compiler.
1126
1127 @cindex side effects, order of evaluation
1128 @cindex order of evaluation, side effects
1129 It is never safe to depend on the order of evaluation of side effects.
1130 For example, a function call like this may very well behave differently
1131 from one compiler to another:
1132
1133 @smallexample
1134 void func (int, int);
1135
1136 int i = 2;
1137 func (i++, i++);
1138 @end smallexample
1139
1140 There is no guarantee (in either the C or the C++ standard language
1141 definitions) that the increments will be evaluated in any particular
1142 order. Either increment might happen first. @code{func} might get the
1143 arguments @samp{2, 3}, or it might get @samp{3, 2}, or even @samp{2, 2}.
1144
1145 @item
1146 Making certain warnings into errors by default.
1147
1148 Some ISO C testsuites report failure when the compiler does not produce
1149 an error message for a certain program.
1150
1151 @opindex pedantic-errors
1152 ISO C requires a ``diagnostic'' message for certain kinds of invalid
1153 programs, but a warning is defined by GCC to count as a diagnostic. If
1154 GCC produces a warning but not an error, that is correct ISO C support.
1155 If testsuites call this ``failure'', they should be run with the GCC
1156 option @option{-pedantic-errors}, which will turn these warnings into
1157 errors.
1158
1159 @end itemize
1160
1161 @node Warnings and Errors
1162 @section Warning Messages and Error Messages
1163
1164 @cindex error messages
1165 @cindex warnings vs errors
1166 @cindex messages, warning and error
1167 The GNU compiler can produce two kinds of diagnostics: errors and
1168 warnings. Each kind has a different purpose:
1169
1170 @itemize @w{}
1171 @item
1172 @dfn{Errors} report problems that make it impossible to compile your
1173 program. GCC reports errors with the source file name and line
1174 number where the problem is apparent.
1175
1176 @item
1177 @dfn{Warnings} report other unusual conditions in your code that
1178 @emph{may} indicate a problem, although compilation can (and does)
1179 proceed. Warning messages also report the source file name and line
1180 number, but include the text @samp{warning:} to distinguish them
1181 from error messages.
1182 @end itemize
1183
1184 Warnings may indicate danger points where you should check to make sure
1185 that your program really does what you intend; or the use of obsolete
1186 features; or the use of nonstandard features of GNU C or C++. Many
1187 warnings are issued only if you ask for them, with one of the @option{-W}
1188 options (for instance, @option{-Wall} requests a variety of useful
1189 warnings).
1190
1191 @opindex pedantic
1192 @opindex pedantic-errors
1193 GCC always tries to compile your program if possible; it never
1194 gratuitously rejects a program whose meaning is clear merely because
1195 (for instance) it fails to conform to a standard. In some cases,
1196 however, the C and C++ standards specify that certain extensions are
1197 forbidden, and a diagnostic @emph{must} be issued by a conforming
1198 compiler. The @option{-pedantic} option tells GCC to issue warnings in
1199 such cases; @option{-pedantic-errors} says to make them errors instead.
1200 This does not mean that @emph{all} non-ISO constructs get warnings
1201 or errors.
1202
1203 @xref{Warning Options,,Options to Request or Suppress Warnings}, for
1204 more detail on these and related command-line options.