Opened 9 years ago
Closed 9 years ago
#346 closed defect (invalid)
Do not include stdint.h in 386/builtin.h
Reported by: | KO Myung-Hun | Owned by: | |
---|---|---|---|
Priority: | normal | Milestone: | libc-0.7 |
Component: | libc | Version: | 0.6.6 |
Severity: | normal | Keywords: | |
Cc: |
Description
Hi/2.
386/builtin.h
includes stdint.h
. This may not be a problem on C, however this may be a problem on C++. Because, stdint.h
does not define some macros such as INT64_C()
on C++ by default. It needs some macros such as __STDC_CONSTANT_MACROS
are declared.
So if stdint.h
is included once without macro declaration on C++, later macros such as INT64_C()
are not declares even if stdint.h
is included explicitly.
For example,
#include <vector> #include <iostream> #define __STDC_CONSTANT_MACROS #include <stdint.h> int main() { std::cout << INT64_C(0) << "\n"; return 0; }
This fails.
vector.cpp: In function `int main()': vector.cpp:9: error: `INT64_C' undeclared (first use this function) vector.cpp:9: error: (Each undeclared identifier is reported only once for each function it appears in.)
However, this succeeds on other platforms such as mingw-482.
Attachments (1)
Change History (2)
by , 9 years ago
Attachment: | builtin.diff added |
---|
comment:1 by , 9 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
This is not a problem of 386/builtin.h including stdint.h, but of C++11 support.
See ticket:297#comment:1.
Patch to remove stdint.h from 386/builtin.h