我想在程序中更改所有int
类型以支持任意位置整数。我选择使用GMP
。
我在考虑是否可以#define
将所有int
替换为mpz_class
。
我从一个小程序开始
#include <iostream>
#define int long long int
using namespace std;
int main(){
// .... code
}
编译器已经在抱怨main
必须返回int
类型。
是否可以向#define
添加例外?或者这是一个非常糟糕的主意吗?
答案 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
任何保留标识符。