This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug preprocessor/20262] New: __LINE__ implementation flaky.
- From: "david dot pye at osm dot co dot uk" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 1 Mar 2005 15:58:55 -0000
- Subject: [Bug preprocessor/20262] New: __LINE__ implementation flaky.
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
The following code snippet triggers the assert.
Interestingly, the exact message that you get depends on the gcc version. 2.9x
gives you a "6+1 != 6" message, where 3.x gives you a "7+1 != 7".
On gcc3.3.5:
silly: sillytest.c:7: main: Assertion `((7) + 1 == (7))' failed.
Aborted
The code is as follows.
#include <assert.h>
#define macro(a, b) ((a) + 1 == (b))
int
main(void)
{
assert(macro(__LINE__
, __LINE__));
return 0;
}
You're not alone - the only compiler I've found that does what I expect is the
SunWorkshop Pro compiler. Pretty much all the rest mess up somewhere along the line!
Cheers,
David
--
Summary: __LINE__ implementation flaky.
Product: gcc
Version: 3.3.5
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: preprocessor
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: david dot pye at osm dot co dot uk
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20262