使用了C++异常处理程序,但未启用展开语义:这是什么意思,如何修复?

fnatzsnv  于 2024-01-09  发布在  其他
关注(0)|答案(2)|浏览(153)

我正在做一个简单的程序,通过使用冒泡排序对一副牌进行排序,然后显示它。我得到了一个奇怪的运行时错误。有人能向我解释这个错误并给予如何修复它的建议吗?
错误代码:
C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xlocale(341):警告C4530:使用了C++异常处理程序,但未启用展开语义。指定/EHsc
C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\exception(359):警告C4577:未指定异常处理模式时使用“noexcept”;不保证异常终止。
C:\SortedCards.cpp:致命错误C1083:无法打开编译器生成的文件:'C:\SortedCards. obj':权限被拒绝
我的代码:

  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. class SortedCards
  5. {
  6. private:
  7. vector<double> v;
  8. int nElems;
  9. void swap(int one, int two) {
  10. double temp = v[one];
  11. v[one] = v[two];
  12. v[two] = temp;
  13. }
  14. public:
  15. SortedCards(int max) : nElems(0)
  16. {
  17. v.resize(max);
  18. }
  19. void insert(double value)
  20. {
  21. v[nElems] = value;
  22. nElems++;
  23. }
  24. void display() {
  25. for (int i = 0; i < nElems; i++) {
  26. if (v[i] == 11) {
  27. cout << "A ";
  28. }
  29. else if (v[i] == 12) {
  30. cout << "J ";
  31. }
  32. else if (v[i] == 13) {
  33. cout << "Q";
  34. }
  35. else if (v[i] == 14) {
  36. cout << "K";
  37. }
  38. else {
  39. cout << v[i] << " ";
  40. }
  41. }
  42. cout << endl;
  43. }
  44. void bubbleSort()
  45. {
  46. int out, in;
  47. for (out = nElems - 1; out > 1; out--) {
  48. for (in = 0; in < out; in++) {
  49. if (v[in] > v[in + 1]) {
  50. swap(in, in + 1);
  51. }
  52. }
  53. }
  54. }
  55. };
  56. int main() {
  57. int maxSize = 100;
  58. SortedCards arr(maxSize);
  59. arr.insert(1);
  60. arr.insert(2);
  61. arr.insert(3);
  62. arr.insert(4);
  63. arr.insert(5);
  64. arr.insert(6);
  65. arr.insert(7);
  66. arr.insert(8);
  67. arr.insert(9);
  68. arr.insert(10);
  69. arr.insert(11);
  70. arr.insert(12);
  71. arr.insert(13);
  72. arr.insert(14);
  73. arr.insert(1);
  74. arr.insert(2);
  75. arr.insert(3);
  76. arr.insert(4);
  77. arr.insert(5);
  78. arr.insert(6);
  79. arr.insert(7);
  80. arr.insert(8);
  81. arr.insert(9);
  82. arr.insert(10);
  83. arr.insert(11);
  84. arr.insert(12);
  85. arr.insert(13);
  86. arr.insert(14);
  87. arr.display();
  88. arr.bubbleSort();
  89. arr.display();
  90. return 0;
  91. }

字符串

clj7thdc

clj7thdc1#

/EHsc不是一个错误;它只是一个警告。这个错误是关于文件I/O的:

  1. Cannot open compiler generated file: 'C:\SortedCards.obj': Permission denied

字符串
只要在确保您对该文件具有写权限后重新构建它。

6kkfgxo0

6kkfgxo02#

已经6年了,但我还是会尝试的。@ihk想说的是给给予cl.exe(这里的编译器)读写权限,以允许它输出目录中的文件。你可以在属性->安全选项卡部分修改它。这应该可以做到。
here is an image of what i am referring to

相关问题