在C ++中使用保留字

时间:2017-09-26 13:47:35

标签: c++ visual-c++ reserved-words

我有一个相当庞大和复杂的应用程序集,这些应用程序是用旧版本的VC ++编写的。

在几个较低级别的类中使用的方法(在任何地方使用)命名为" export()"。

在更新版本的C ++中," export"是一个保留字。保留,但从未使用,显然它永远不会。

在VC ++ 2015中,我能做些什么来允许这些代码编译,而不必重命名方法?

3 个答案:

答案 0 :(得分:5)

我的建议是采取命中并重命名方法。这很痛苦,但它会使您的代码兼容并且便于携带。

答案 1 :(得分:2)

如果你理解了我的意思,那就没有合法的方式:{C}一直保留export并且有一个奇怪的历史:直到C ++ 11它是与模板一起使用,从C ++ 11开始,它没有任何意义,但仍然保留。我想export将在支持 modules 的未来标准中获得不同的含义。 因此,如果您想编写可移植的C ++,则需要重命名方法

使用#define更改保留字行为的行为是未定义

也就是说,MSVC2015并不是一个C ++ 11编译器,而且export之前的关键字是#define的事实。因此,有一种情况是在您的特定实例中合法使用__cplusplus:您的代码已经无法移植。您可以检查str='23.889,45 €' 的值,这样您的代码就无法使用C ++ 11编译器进行编译。这会给你带来一些时间。

参考:http://en.cppreference.com/w/cpp/keyword/export

答案 2 :(得分:1)

形式上它是未定义的行为,但VC2015不会抱怨:#define export EXPORT。或/D作为项目设置。