int64_t背后有什么魔力
What's the magic behind int64_t
- 在
C89
中 long long
不存在(它是在 C99
中添加的)
- 在
C++03
(和 C++98
)中 long long
不存在(它是在 C++11
中添加的)
现在如果我编译这个:
typedef long long myType;
int main()
{
myType a;
}
with (g++ sourceFile.cpp -std=c++03 -pedantic
OR gcc sourceFile.c -std=c89 -pedantic
) 它会警告当前选择的标准不支持 long long
但是,如果我编译它(使用相同的标志):
#include <stdint.h> //in case of C
#include <cstdint> //in case of C++
int main()
{
int64_t a;
}
即使 stdint.h
(cstdint
仅包含 stdint.h
并使名称在 std
中可见)包含
,我也不会收到任何警告
...
typedef long long int64_t;
...
我想知道这是怎么回事。
I won't get any warnings even if stdint.h...
这是因为默认情况下 GCC 不会为系统 headers 生成警告。您可以通过命令行选项 -Wsystem-headers
...
命令它这样做
- 在
C89
中long long
不存在(它是在C99
中添加的) - 在
C++03
(和C++98
)中long long
不存在(它是在C++11
中添加的)
现在如果我编译这个:
typedef long long myType;
int main()
{
myType a;
}
with (g++ sourceFile.cpp -std=c++03 -pedantic
OR gcc sourceFile.c -std=c89 -pedantic
) 它会警告当前选择的标准不支持 long long
但是,如果我编译它(使用相同的标志):
#include <stdint.h> //in case of C
#include <cstdint> //in case of C++
int main()
{
int64_t a;
}
即使 stdint.h
(cstdint
仅包含 stdint.h
并使名称在 std
中可见)包含
...
typedef long long int64_t;
...
我想知道这是怎么回事。
I won't get any warnings even if stdint.h...
这是因为默认情况下 GCC 不会为系统 headers 生成警告。您可以通过命令行选项 -Wsystem-headers
...