Вложенные функции отключены, используйте -fnested-функции для повторного включения

#c #nested-function

#c #вложенная функция

Вопрос:

Я отображаю эту ошибку: вложенные функции отключены, используйте -fnested-функции для повторного включения, я работаю на MAC, что вы думаете о причинах этого?

Это программа, которая составляет список с клиентами и продажами. Он находит клиента, удаляет их и

 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "clientes.h"


int ordena(LISTA1 *inicio,LISTA1 *aux,LISTA1 *nodo,LISTA1 *aux2);
int agrega_cliente(LISTA1 *inicio, LISTA1*aux,LISTA1 *nodo,LISTA1 *aux2);
int busca_cliente(LISTA1 *inicio, LISTA1*aux,LISTA1 *nodo,LISTA1 *aux2,LISTA2         *inicioventas,LISTA2 *auxventas,LISTA2 *nodoventas,LISTA2 *aux2ventas);
extern void agrega_nombre();
int main(void)
{
 int menu,pops=0;
LISTA1 *inicio, *aux,*nodo, *aux2;
inicio=NULL;
aux=inicio;
LISTA2 *inicioventas, *auxventas,*nodoventas, *aux2ventas;
 system("clear");
  //funcion void carga_datos(); 
ordena(inicio,aux,nodo,aux2);

 printf("TIENDA DEPARTAMENTALnnn");
  printf("1. Agregar a un Cliente.n2. Agregar una venta.n3. Buscar Cliente. n4. Borrar       Cliente. n5. Borrar una venta. n6. Salir.");
printf("nnElige una opcion: "); 
   scanf("%d", amp;menu);
 switch(menu)
{
 case 1:
  system("clear");
  printf("opcion1n");
        agrega_cliente(inicio,aux,nodo,aux2);

  break;
  case 2:
  system("clear");
  printf("opcion2n");
  break;
case 3:
  system("clear");
  printf("opcion3n");

        busca_cliente(inicio,aux,nodo,aux2,inicioventas, auxventas, nodoventas, aux2ventas);
        puts(aux2->nombre);

  break;
case 4:
  system("clear");
  printf("opcion4n");
  break;
case 5:
  system("clear");
  printf("opcion5n");
  break;
case 6:
  system("clear");
  printf("opcion6n");
  break;
}
}

///Funcion Busqueda
 int busca_cliente(LISTA1 *inicio, LISTA1 *aux,LISTA1 *nodo,LISTA1 *aux2,LISTA2    *inicioventas,LISTA2 *auxventas,LISTA2 *nodoventas,LISTA2 *aux2ventas)
 {
    char nombrebusqueda[80];
int numclienteprueba;
printf("Dame el nombre del cliente a buscarn");
scanf("%s",nombrebusqueda);
aux2=aux; 
while(aux2!=NULL)
{ 
    if((strcmp(nombrebusqueda,aux2->nombre))==0)
    {
        puts(aux2->nombre);
        ////////Buscamos la venta
        aux2ventas=aux; 
        while(aux2ventas!=NULL)
        {
            numclienteprueba=aux2ventas->num_clienteventas;
            if(numclienteprueba==aux2ventas->num_clienteventas)
            {
                printf("Wow");
        }
        ////////////
    }
    aux2=aux2->sig;
}
 }

 ////////////////////////////////////////////Funcion Ordena



 int ordena(LISTA1 *inicio, LISTA1*aux,LISTA1 *nodo,LISTA1 *aux2)
 {
char pruebaman[80],probaman[80];//nombres
char pruebadireccion[150],probadireccion[150];//direccion
int pruebanum_cliente,probanum_cliente;//numero de cliente
aux2=aux;
strcpy(pruebaman,aux2->nombre);
strcpy(pruebadireccion,aux2->direccion);
pruebanum_cliente=aux2->num_cliente;
aux2=aux2->ant;

do
   {

    strcpy(probaman,aux2->nombre);

    if(pruebaman[0]<probaman[0])
    {
        strcpy(pruebaman,aux2->nombre);
        strcpy(pruebadireccion,aux2->direccion);
        pruebanum_cliente=aux2->num_cliente;
        aux2=aux2->sig;
        strcpy(aux2->nombre,probaman); 
        strcpy(aux2->direccion,probadireccion);
        probanum_cliente=aux2->num_cliente;    
    }
    strcpy(pruebaman,aux2->nombre);
    strcpy(pruebadireccion,aux2->direccion);
    pruebanum_cliente=aux2->num_cliente;

    aux2=aux2->ant;


    printf("Ciclonn");

}
while(aux2!=NULL);
aux2=aux;
strcpy(pruebaman,aux2->nombre);
aux2=aux2->ant;
strcpy(probaman,aux2->nombre);
if(pruebaman[0]<probaman[0])
    ordena(inicio,aux,nodo,aux2);
 } 



 ///////////////////////////////////////////////////////Agrega Cliente
 int agrega_cliente(LISTA1 *inicio, LISTA1*aux,LISTA1 *nodo,LISTA1 *aux2)
  {

FILE *clientes;
clientes=fopen("clientes.txt", "a ");
//fseek(clientes, 0L, SEEK_END);

inicio=NULL;
nodo=malloc(sizeof(LISTA1));
aux=malloc(sizeof(LISTA1));

if(nodo==NULL)
{
    printf("No hay memorian");
    exit(1);
}
printf("NOMBRE: ");
gets(nodo->nombre);
printf("DIRECCION: ");
gets(nodo->direccion);
printf("NUMERO DE CLIENTE: ");
scanf("%d", amp;nodo->num_cliente);

if(inicio==NULL)
{
    inicio=nodo;
    inicio->sig=NULL;
    inicio->ant=NULL;
    aux=inicio;
}
else
{
    aux->sig =nodo;
    nodo->ant=aux;
    aux=nodo;
    nodo->sig=NULL;
}
nodo=malloc(sizeof(LISTA1));

aux2=inicio;

while(aux2!=NULL)
{
    fprintf(clientes, "%sn", aux2->nombre);
    fprintf(clientes, "%sn", aux2->direccion);
    fprintf(clientes, "%dn", aux2->num_cliente);
    puts(aux2->nombre);
    puts(aux2->direccion);
    aux2=aux2->sig;
}


aux2=aux;
do
{
    puts(aux2->nombre);
    aux2=aux2->ant;
}
while(aux2!=NULL);
fclose(clientes);
  }
  

Комментарии:

1. Использует ли этот код (намеренно) вложенные функции? Отступы и расположение скобок настолько случайны, что я даже не могу сказать.

2. Ваш код нечитаем. Используйте согласованный стиль отступов: en.wikipedia.org/wiki/Indent_style Возможно, ваш редактор сможет сделать это за вас. Скорее всего, вы обнаружите свою ошибку в процессе исправления отступа.

3. Причиной этой ошибки является неправильный отступ.

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

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

Ответ №1:

Вам не хватает закрывающей скобки в конце busca_cliente() . Как я узнал? Я вставил ваш код в http://www.prettyprinter.de/module.php?name=PrettyPrinter чтобы его было легко читать.

Комментарии:

1. Хахахаха, да, я новичок в способе stack overflow делать отступы в коде… но да, я ненавижу, когда у меня нет очков.. Большое вам спасибо!