【问题标题】:C compile error: Id returned 1 exit statusC 编译错误:Id 返回 1 退出状态
【发布时间】:2013-07-17 01:52:12
【问题描述】:

由于某种原因,当我尝试编译程序时,编译器说权限被拒绝并且 Id 返回 1 退出状态。谁能告诉我这是什么意思?谢谢

#include <stdio.h>                                               /* Library inclusions */
#include "genlib.h" 
#include "simpio.h"

int binSearch(int val, int numbers[], int size1);                /* prototypes */
void sortArray (int numbers[], int size1);                       
int indexMax (int numbers[], int low, int high);
void swap (int numbers[], int loc, int loc1);
void getArray (int numbers[], int size1);
void displayArray (int numbers[], int size1);

main()
{
  int value, size1;

  printf("Enter the number of elements: ");
  size1=GetInteger(); 
  int numbers[size1];
  getArray(numbers, size1); 
  sortArray(numbers, size1); 
  displayArray(numbers, size1);
  printf("\nEnter value to find: ");
  value=GetInteger();
  binSearch(value, numbers, size1);
  getchar();
}

void sortArray (int numbers[], int size1)                        /*Function sortArray*/
{
 int i , maxInd;

 for (i= size1-1; i>=0;i--)
 {
     maxInd=indexMax(numbers, 0, i);
     swap (numbers, i, maxInd);
 }
}

void displayArray (int numbers[], int size1)                     /*Function displayArray*/
{
 int i;

 printf("This is the sorted set of numbers: \n");
 for (i=0; i< size1; i++)
 {
         printf ("%d\t", numbers[i]); 
     }
}

void getArray (int numbers[], int size1)                         /*Function getArray*/
{
 int i;

 for (i=0; i<size1; i++)
 {
     printf ("Enter the values of the %d elements: ", size1);
     numbers[i]=GetInteger();
 }
}

int indexMax (int numbers[], int low, int high)                  /*Function indexMax*/
{
int i, maxInd;

maxInd=high;
for (i=low;i<=high;i++)
{
    if (numbers[i]>numbers[maxInd]) 
    {
                   maxInd =i;
    }
    }
    return (maxInd);
}

void swap (int numbers[], int loc, int loc1)                     /*Function swap*/
{
 int temp;

 temp=numbers[loc];
 numbers[loc]=numbers[loc1];
 numbers[loc1]=temp;
}

int binSearch(int val, int numbers[], int size1)                 /*Function binSearch*/
{
 int low, high, mid;

 low=0;
 high=size1-1;
 while(low<=high)
 {
                 mid=(low+high)/2;
                 if(val<numbers[mid])
                 {
                                 high=mid-1;                
                 }            
                 else if(val>numbers[mid])
                 {
                                 low=mid+1; 
                 }   
                 else if(val==numbers[mid])
                 {
                                 printf("Your number is in location %d\n", mid+1);break;    
                 } 
                 else
                 {
                                 printf("Your value is not in the array.");        
                 }
   }
}

以上是我尝试编译的二分查找算法代码。

【问题讨论】:

  • 能否请您添加您的程序和您用于编译它的编译器命令?
  • 你对源文件有读取权限吗?你对目录有写权限吗?
  • 这不是编程问题,而是系统操作问题。您至少应该指定您的操作系统。
  • 我正在使用 Dev C++ 编译器,并使用 Windows 7 作为我的操作系统。我不确定编译器命令,但要编译程序,我按 Ctrl F9
  • 哦!有一个赞成票,哇 :) 只需用谷歌搜索错误。

标签: c compiler-errors permission-denied


【解决方案1】:

我可能猜到,您的程序的旧实例仍在运行。 Windows 不允许更改当前“正在使用”的文件,并且您的链接器无法将新的 .exe 写入正在运行的文件的顶部。尝试停止/终止您的程序。

【讨论】:

  • 杀死任务后仍然给出同样的错误信息。代码可能有问题吗?
  • 没错,重启我的电脑解决了问题(无法手动杀死,因为我在任务管理器中找不到正在运行的程序)
【解决方案2】:

可能是你刚刚说的 main{....当我开始我的 main 时,我使用 int main{。

【讨论】:

  • 不。 int 在未指定返回类型时在 C 中假定。
【解决方案3】:

这个答案是为 C++ 开发人员写的,因为我被一个问题困扰着。这是解决方案:

代替

main()
{

}

请输入

int main()
{

}

这样就可以执行main函数了。

顺便说一句, 如果您编译没有要执行的主函数的 C/C++ 源文件, 肯定会有错误消息说:

"[Error] Id 返回 1 个存在状态"

但有时我们只是不需要文件中的 main 函数, 在这种情况下,请忽略错误消息。

【讨论】:

    【解决方案4】:

    它似乎是在您运行程序的先前编译版本时出现的

    【讨论】:

    • 这就是现有(4 岁)接受的答案所说的。你的回答什么也没增加。
    【解决方案5】:

    我的解决方案是尝试打开另一个您可以在另一台 PC 上成功运行的文件,打开该文件并运行它,然后复制该文件并创建一个新文件。尝试运行它。

    【讨论】:

      【解决方案6】:

      我敢打赌,这是因为在尝试重新编译之前没有关闭程序的运行实例

      通常,ld.exe 在无法访问所需文件时返回 1。这通常包括

      • 找不到要链接的目标文件(或Access denied
      • 找不到一个或多个要链接的符号
      • 无法打开可执行文件进行写入(或 AD)

      程序看起来完全没问题,所以第二点不应该命中。在通常情况下,ld 不可能无法打开目标文件(除非您的驱动器有故障和文件系统不干净),因此第一点也几乎是不可能的。

      现在我们进入第三点。请注意,Windows 不允许在使用文件时写入文件,因此您程序的运行实例会阻止 ld.exe 将新的链接程序写入其中。

      所以下次编译前一定要关闭正在运行的程序。

      【讨论】:

        【解决方案7】:

        您可能正在编译您的程序,而另一个程序可能正在后台运行。 首先,看看是否有其他程序在运行。关闭它,然后尝试 ro compile。

        【讨论】:

        • 请编辑您的答案并提供更多信息。您的答案看起来像是评论而不是答案。
        【解决方案8】:

        使用 code::blocks ,我已经解决了这个错误:

        工作区属性 > 构建目标 > 构建目标文件

        并检查每个项目文件。

        【讨论】:

          【解决方案9】:

          1d 返回 1 个退出状态错误

          首先,您必须通过单击 file new 来创建一个项目,然后单击 project 并给出项目名称,选择语言 c 或 c++ 并选择 empty。 那么你的程序在那个项目下... 然后给一个程序名保存它... 确保你在某个项目下编译运行一个程序...

          【讨论】:

          • 这个问题的答案在多大程度上?
          【解决方案10】:

          是一个简单的 MAYUS 词。验证日志。

          【讨论】:

            【解决方案11】:

            在编译程序时尝试“gcc filename.c -lm”...它对我有用

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-02-19
              • 2018-04-16
              • 1970-01-01
              • 1970-01-01
              • 2017-04-02
              • 1970-01-01
              • 2020-12-12
              • 1970-01-01
              相关资源
              最近更新 更多