You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未使用__int64却报相关编译错误?解析typedef与宏定义冲突

问题分析与解答

错误根源

你的代码第一行的宏定义#define int64_t long long int会在预编译阶段替换所有出现的int64_t标识符。当处理到第二行typedef long long int64_t;时,预编译会把int64_t替换成long long int,这行代码直接变成:

typedef long long long long int;

这明显违反C语言的类型声明语法——连续的long关键字属于非法写法。

为何报错提到__int64

很多编译器(比如MSVC)会把标准C的long long类型映射为编译器内置的__int64类型。当预编译后的错误代码typedef long long long long int;被编译器解析时,第一个long long被识别为__int64,后面又跟着一个long,于是触发了“__int64后接long非法”的错误提示。

修复方案

  • 保留第二行的typedef long long int64_t;,删除第一行的宏定义(这是C标准推荐的类型别名方式);
  • 或者保留第一行的宏定义,但修改为#define int64_t long long(无需额外的int),同时删除第二行的typedef。

内容的提问来源于stack exchange,提问作者user19470144

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 01:42:01