C89 long long不存在(已添加C99)C++03(和C++98)long long不存在(它被添加C++11)现在,如果我编译这个:
typedef long long myType;
int main()
{
myType a;
}
Run Code Online (Sandbox Code Playgroud)
使用(g++ sourceFile.cpp -std=c++03 -pedanticOR 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;
}
Run Code Online (Sandbox Code Playgroud)
即使stdint.h(cstdint仅包含stdint.h并使名称在内部可见std)包含,我也不会收到任何警告
...
typedef long long int64_t;
...
Run Code Online (Sandbox Code Playgroud)
我想知道这是如何工作的.