[英]C++ Builder 10.4 community edition => scoped_lock are missing (at least seems to be a path mess)
剛剛安裝了 C++Builder 10.4 社區版。 我的應用程序是一個控制台多線程應用程序,並使用std::scoped_lock
(C++17)。
It seems that C++Builder chooses a <mutex>
header file that does not define scoped_lock
in C:\Program Files (x86)\Embarcadero\Studio\21.0\include\dinkumware64
, where the <mutex>
header file that is in C:\Program Files (x86)\Embarcadero\Studio\21.0\include\dinkumware64\Dinkum\threads
實際上確實定義了它們,但不是在包含解析期間使用的。
我錯過了什么? 這有沒有被測試過?
從安裝中重新啟動 C++Builder,創建一個新的控制台、多線程應用程序,為main()
獲取預先生成的 shim 代碼並添加以下代碼:
#pragma hdrstop
#pragma argsused
#include <mutex>
#ifdef _WIN32
#include <tchar.h>
#else
typedef char _TCHAR;
#define _tmain main
#endif
#include <stdio.h>
std::mutex m;
int _tmain(int argc, _TCHAR* argv[])
{
std::scoped_lock lock(m);
return 0;
}
這將失敗並出現錯誤:
命名空間“std”中沒有名為“std::scoped_lock”的成員
該應用程序是 32 位,調試。 我嘗試了 64 位,因為<mutex>
header 奇怪地位於dinkumware64/mutex
下,並且調試無/調試,我嘗試更改各種選項但無濟於事。
現在在dinkumware64/Dinkum/threads/
下,還有另一個“互斥鎖” package 包含scoped_lock
,但我不知道為什么 C++Builder 會選擇它,而且它也不在std
命名空間中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.