我正在製作一個簡單的程序,通過使用冒泡排序來排序一副撲克牌,然後顯示它。我收到一個奇怪的運行時錯誤。有人可以向我解釋這個錯誤,並就如何解決它提出建議嗎?已使用C++異常處理程序,但展開語義未啓用:這是什麼意思,以及如何解決?
錯誤:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xlocale(341): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\exception(359): warning C4577: 'noexcept' used with no exception handling mode specified; termination on exception is not guaranteed. Specify /EHsc
C:\SortedCards.cpp : fatal error C1083: Cannot open compiler generated file: 'C:\SortedCards.obj': Permission denied
我的代碼:
#include <iostream>
#include <vector>
using namespace std;
class SortedCards
{
private:
vector<double> v;
int nElems;
void swap(int one, int two) {
double temp = v[one];
v[one] = v[two];
v[two] = temp;
}
public:
SortedCards(int max) : nElems(0)
{
v.resize(max);
}
void insert(double value)
{
v[nElems] = value;
nElems++;
}
void display() {
for (int i = 0; i < nElems; i++) {
if (v[i] == 11) {
cout << "A ";
}
else if (v[i] == 12) {
cout << "J ";
}
else if (v[i] == 13) {
cout << "Q";
}
else if (v[i] == 14) {
cout << "K";
}
else {
cout << v[i] << " ";
}
}
cout << endl;
}
void bubbleSort()
{
int out, in;
for (out = nElems - 1; out > 1; out--) {
for (in = 0; in < out; in++) {
if (v[in] > v[in + 1]) {
swap(in, in + 1);
}
}
}
}
};
int main() {
int maxSize = 100;
SortedCards arr(maxSize);
arr.insert(1);
arr.insert(2);
arr.insert(3);
arr.insert(4);
arr.insert(5);
arr.insert(6);
arr.insert(7);
arr.insert(8);
arr.insert(9);
arr.insert(10);
arr.insert(11);
arr.insert(12);
arr.insert(13);
arr.insert(14);
arr.insert(1);
arr.insert(2);
arr.insert(3);
arr.insert(4);
arr.insert(5);
arr.insert(6);
arr.insert(7);
arr.insert(8);
arr.insert(9);
arr.insert(10);
arr.insert(11);
arr.insert(12);
arr.insert(13);
arr.insert(14);
arr.display();
arr.bubbleSort();
arr.display();
return 0;
}
它說如何解決它在錯誤消息中的權利。 –
如何啓用展開語義? –
錯誤信息告訴你,我引用:「指定'/ EHsc'」。如果你不知道這意味着什麼,爲什麼不在你最喜歡的搜索引擎中搜索'/ EHsc'?這可能證明照亮。 –