通常Microsoft代码使用GCC不理解的__int64
。
我知道我可以把它写成像这样的宏:
#define __int64 long long
但由于代码可移植性,我不想这样做。 我试图给GCC以下预处理器选项:
-D__int64="long long"
由于两个long
之间的空格,我收到以下错误:
gcc.exe: error: long: No such file or directory
如何解决?
答案 0 :(得分:4)
您可以使用int64_t
,该类型的标准名称,但只有在代码#include <stdint.h>
的情况下才能使用,并且可能希望过多。
否则你可以尝试&#34;潜行&#34;在typedef
的一些常见标题中:
typedef long long __int64;
也许只有在检测到GCC时才这样做。
修复它&#34;你的方式&#34;应该是可能的,它看起来像一些引用问题。
答案 1 :(得分:2)
如果你的例子不起作用,听起来你有一个双重评估问题。如果您无法弄清楚为什么会发生这种情况,您可以尝试使用gcc的-include
或-imacros
选项。您将使用要添加的gcc_extra_definess
创建新文件#defines
,并调用gcc -include gcc_extra_defines ...
以获取gcc以读取该文件并在读取源文件之前将其包含在内。这比定义多个事物的一堆-D
选项容易一些,特别是如果你有引用问题或者想要除宏以外的东西。
答案 2 :(得分:1)
看起来像gcc只看到
引起的引用问题gcc ... -D__int64=long long
您能告诉我们您使用的脚本或Makefile片段吗?这是什么外壳?