代码以供参考:
#include<iostream>
using namespace std;
#define TEST(X) X##"test"
int main()
{
printf(TEST("TEST:"));
return 0;
}
有没有修改编译参数的解决方案,因为这个问题是出现在我在Win10环境下编译java虚拟机源码出现的,如果这样解决的话就要修改jvm源码,工作量太大了
@huoming: 这好像不行,VS 默认编译器不支持这种宏展开的。唯一的办法就是 VS 使用 g++ 编译。这个我没搞过,祝你好运。
@寂静的羽夏: 好的,感谢
给看看报什么错, 不要好像啊
@huoming: 我这报这个:
Invalid suffix on literal; C++11 requires a space between literal and identifier
要加个空格.
@jakio6: 我知道加空格可以,但是这个问题是出现在jvm源码里面,源码中有很多这种,我改不过来,有什么其他办法吗
@huoming: 用C++11之前的版本
@jakio6: c++我不太熟悉,请问一下vs2019怎么切换成c++11之前版本的编译器
切换编译器,VS安装llvm,然后编译器换成clang-cl