Tôi đã thử nghiệm một ví dụ về các chủ đề C++ 11 trong Eclipse. Nhưng tôi đã nhận thông báo này khi chạy chương trình:Làm sao để CDT/Eclipse làm việc với các chủ đề C++ 11?
terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted'
hệ thống của tôi: ubuntu + gcc 4.7
Chương trình:
#include <iostream>
#include <thread>
void worker()
{
std::cout << "hello from worker" << std::endl;
}
int main(int argc, char **argv)
{
std::thread t(worker);
t.join();
}
... và vâng, tôi đặt -std=c++11
và -pthread
bên C/C++ Build -> Settings -> Tool Settings -> Cross G++ Compiler -> Miscellaneous -> Other Flags
.
Mọi nhận xét?
Có vẻ lạ khi đặt những cài đặt đó trong phần "trình biên dịch chéo" (nhưng tôi không biết Eclipse). Sự cố có thể lặp lại nếu cờ '-pthread' không xuất hiện trên dòng lệnh và bạn đã cài đặt các phiên bản libstdC++ khác. Vì vậy, hãy chắc chắn rằng lá cờ thực sự được chuyển đến trình biên dịch của bạn – Mat
Đây là một ngoại lệ thời gian chạy, do đó, mã biên dịch chính xác. Tuy nhiên tôi không hiểu trong trường hợp này thông báo ngoại lệ này sẽ xảy ra ... – Klaim
@ Khen: lỗi đó xuất hiện nếu bạn liên kết với sai libstdC++, điều này có thể xảy ra nếu bạn có nhiều phiên bản được cài đặt và bạn không vượt qua '- pthread' (hoặc cài đặt GCC của bạn được borked) – Mat