gpt4 book ai didi

c++ - 为什么我不能用 "unsigned"限定别名类型?

转载 作者:IT王子 更新时间:2023-10-29 01:07:56 26 4
gpt4 key购买 nike

我正在将我的代码从 Windows 迁移到 Linux。 Linux 上没有名为“__int64”的类型,所以我尝试用别名自己定义它。我的代码如下:

#include <cstdint>

#if !defined(__int64)
typedef int64_t __int64;
#endif

int main(int argc, char** argv)
{
unsigned __int64 ii64 = 0; // Error
return 0;
};

编译时出现如下错误:

main.cpp: In function ‘int main(int, char**)’: main.cpp:10:20: error: expected initializer before ‘ii64’

我知道我可以将“unsigned __int64”替换为“uint64_t”或者定义一个新的类型,但为什么上面的代码无法编译?

最佳答案

参见标准 7.1.6/2:

As a general rule, at most one type-specifier is allowed in the complete decl-specifier-seq of a declaration or in a type-specifier-seq or trailing-type-specifier-seq. The only exceptions to this rule are the following:

signed or unsigned can be combined with char, long, short, or int.

请注意,这并不意味着 unsigned 可以与最终可能是其中一种类型的 typedef 组合,它只能与其他类型直接组合。

此外,请记住 __int64 是为编译器保留的,因此您自己定义它在技术上是非法的。您最好使用标准 int64_tuint64_t 类型。

关于c++ - 为什么我不能用 "unsigned"限定别名类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36157337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com