__int64用于GCC作为预处理器选项

时间:2015-01-27 15:12:22

标签: c gcc c-preprocessor

通常Microsoft代码使用GCC不理解的__int64。 我知道我可以把它写成像这样的宏:

#define __int64 long long

但由于代码可移植性,我不想这样做。 我试图给GCC以下预处理器选项:

-D__int64="long long"

由于两个long之间的空格,我收到以下错误:

gcc.exe: error: long: No such file or directory

如何解决?

3 个答案:

答案 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片段吗?这是什么外壳?