gpt4 book ai didi

c++ - 使用 "expected a string literal, but found a user-defined string literal instead"C"'时是什么导致错误 'extern "?

转载 作者:太空宇宙 更新时间:2023-11-04 15:58:01 34 4
gpt4 key购买 nike

我有包含这些声明的代码:

class IRealNetDll;

extern "C"__declspec(dllexport)
IRealNetDll * CreateRealInstance(int ilicence);

这可以在 Win7 上使用 Visual Studio 2012 正确构建。

但是在 Windows 10 上的 VS 2015、2017 上,这一行:

extern "C"__declspec(dllexport)

结果:

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C3690: expected a string literal, but found a user-defined string literal instead
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2146: syntax error: missing ';' before identifier 'IRealNetDll'

为什么我会收到此错误,为什么只在较新的编译器上出现,我该如何避免?

最佳答案

当引入用户定义文字时,它对语言造成了一个小的、破坏性的变化。字符串文字现在需要用空格与后面的标识符分开,否则标识符将被解析为用户定义的文字运算符:

  • "C"__declspec

    一个标记,理解为使用 __declspec 转换的用户定义文字。

  • "C" __declspec

    两个标记 - 字符串文字 "C" 和标识符 __declspec

您需要添加一个空格来分隔您的 token 。

关于c++ - 使用 "expected a string literal, but found a user-defined string literal instead"C"'时是什么导致错误 'extern "?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51963515/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com