对于大型程序,使用#define将所有int类型更改为另一种类型

时间:2014-01-06 03:44:49

标签: c++ c

我想在程序中更改所有int类型以支持任意位置整数。我选择使用GMP

我在考虑是否可以#define将所有int替换为mpz_class

我从一个小程序开始

#include <iostream>
#define int long long int
using namespace std;

int main(){
    // .... code
}

编译器已经在抱怨main必须返回int类型。

是否可以向#define添加例外?或者这是一个非常糟糕的主意吗?

3 个答案:

答案 0 :(得分:4)

Redefining a keyword is prohibited iff you include any standard headers在这里,您加入了<iostream>,因此您的计划格式不正确。

否则,自己敲门!等等,不,不要,因为这仍然是非常愚蠢的。

相反,重构您的代码以使用一些名为my_integer的新类型(但名称更好):

typedef int my_integer;

然后,当您想要从int更改为mpz_class时,您只需更改my_integer的定义:

typedef mpz_class my_integer;

答案 1 :(得分:1)

使用main而不使用int:

#include <iostream>
#define int long long int
using namespace std;

main(){
    // .... code
}

答案 2 :(得分:0)

简单的答案:虽然技术上可行,但 允许#define任何保留标识符。