C ошибка компиляции: Id вернул 1 статус выхода

по какой-то причине, когда я пытаюсь скомпилировать программу, компилятор говорит, что разрешение отказано, и 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 ("%dt", 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 %dn", mid+1);break;    
                 } 
                 else
                 {
                                 printf("Your value is not in the array.");        
                 }
   }
}

выше приведен код алгоритма бинарного поиска, который я пытался скомпилировать.

9 ответов


Я могу догадаться, что старый экземпляр вашей программы все еще работает. Windows не позволяет изменять файлы, которые в настоящее время" используются", и ваш компоновщик не может написать новый .exe на верхней части работающего. Попробуйте остановить / убить свою программу.


Я уверен, что это потому, что вы не закрыть запущенный экземпляр программы, прежде чем пытаться повторно скомпилировать его.

как правило, ld.exe возвращает 1, когда он не может получить доступ к необходимым файлам. Это обычно включает

  • не удается найти файл объекта, который будет связан (или Access denied)
  • не удается найти один или несколько символов для ссылки
  • не удается открыть исполняемый файл для записи (или объявления)

программы выглядит совершенно нормально, поэтому второе очко не должно попасть. В обычных случаях это невозможно для ld не удается открыть объектный файл (если у вас нет неисправного диска и грязной файловой системы), поэтому первая точка также почти невозможна.

теперь перейдем к третьему пункту. Обратите внимание, что Windows не позволяет записывать в файл, когда он используется, поэтому запущенный экземпляр вашей программы предотвращает ld.exe от написания новой связанной программе.

так что в следующий раз обязательно закройте запущенные программы перед компиляцией.


вы можете компилировать свою программу, в то время как другая программа может работать в фоновом режиме. Во-первых, посмотрите, работает ли другая программа .Закройте его и затем стараются составить.


используя code:: blocks, я решил эту ошибку, выполнив:

свойства рабочей области > цель сборки > целевые файлы сборки

и проверка каждого файла проекта.


1D возвратил 1 ошибку состояния выхода

прежде всего, вы должны создать проект, нажав Файл Создать, а затем проект и дать имя проекта выберите язык c или C++ и выберите пустой также. Тогда ваша программа находится под этим проектом... А затем дайте имя программы save it.... Убедитесь, что вы в рамках какого-то проекта компилируете и запускаете программу...


этот ответ написан для разработчиков C++, потому что меня преследовала такая проблема, как один. Вот решение:

вместо

main()
{

}

введите

int main()
{

}

Итак, основная функция может быть выполнена.

кстати, если вы компилируете исходный файл C / C++ без основной функции для выполнения, там, безусловно, будет сообщение об ошибке, говоря:

"[Error] Id вернул 1 статус существования"

но иногда нам просто не нужна основная функция в файле, в таком случае, просто проигнорируйте сообщение ошибке.


мое решение-попытаться открыть другой файл, который вы можете успешно запустить, что вы делаете на другом ПК, откройте этот файл и запустите его, после этого скопируйте этот файл и создайте новый файл. Попробуйте запустить его.


возможно, вы просто сказали main{....Я использую int main{ когда я начинаю свой main.


кажется, что это происходит, когда у вас есть предыдущая скомпилированная версия вашей программы