如何解决知道Visual Studio上正在运行哪个C ++版本
我试图在Visual Studio上为我的项目设置c ++ 11,并找出默认情况下编译器使用的版本,我使用了以下代码:
#include <iostream>
int main(){
#if __cplusplus==201402L
std::cout << "C++14" << std::endl;
#elif __cplusplus==201103L
std::cout << "C++11" << std::endl;
#elif __cplusplus==199711L
std::cout << "C++" << std::endl;
#elif __cplusplus==201703L
std::cout << "C++17" << std::endl;
#elif __cplusplus==1
std::cout << "C+" << std::endl;
#endif
int* i = nullptr;
return 0;
}
具有输出c ++(98),我试图通过CMakeLists强制编译器使用c ++ 11,如下所示:
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_required ON)
set(CMAKE_CXX_EXTENSIONS OFF)
int* i = nullptr;
令人惊讶的是,输出仍然是c ++(98),但是该应用程序可以正常工作。如何解释这种“异常”?我如何知道/决定使用哪种标准?
解决方法
根据@paddy提供的问题Visual Studio 2012 __cplusplus and C++ 11,这是MSVC的一个已知错误,因为版本宏设置为C ++ 98。您应该使用
final firestore = FirebaseFirestore.instance;
FirebaseAuth auth = FirebaseAuth.instance;
Future<String> getPlasticNum() async {
final CollectionReference users = firestore.collection('UserNames');
final String uid = auth.currentUser.uid;
final result = await users.doc(uid).get();
return result.data()['plastics'].toString();
}
开关进行编译,以将版本宏更改为正确的值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。