elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Portar código de dev-c++ a Visual Studio
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Portar código de dev-c++ a Visual Studio  (Leído 6,152 veces)
VladisMSX1

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Portar código de dev-c++ a Visual Studio
« en: 21 Mayo 2012, 10:05 am »

Hola foreros. Estoy intentando portar unas funciones que escribí en dev-c++ y funcionan correctamente a Visual Studio 2010. Me tira problemas por todos lados cuando porto el programa, con cosas como las llamadas system e incluso declaraciones como los for. En total, un código de algo mas de 500 líneas me lanza 64 errores, una barbaridad, y son todos del estilo de:

"Intellisense: Se esperaba una declaración"
"Intellisense: Se esperaba )"
"intellisense: "IMoaUnknownVtbl" no está definido"

Me llega a tirar errores incluso cuando intento usar variables declaradas en una función, diciendome que no están declaradas.

Nunca he usado Visual Studio y no se si tengo que incluir alguna librería o configurar el editor para que me interprete correctamente el código. ¿Alguna ayuda?

Gracias, un saludo ;)


En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Portar código de dev-c++ a Visual Studio
« Respuesta #1 en: 21 Mayo 2012, 17:33 pm »

Sin ver el código va a ser muy dificil ayudarte...


En línea

VladisMSX1

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: Portar código de dev-c++ a Visual Studio
« Respuesta #2 en: 22 Mayo 2012, 09:42 am »

Decidí no ponerlo porque pensaba que era un problema "genérico" de cualquier código escrito en el compilador Dev-C++ al intentar portarlo a Visual Studio 2010  :xD

Aquí lo pongo:

Código:
#include "xtrautil.h"
#include <conio.h>         //Librería de headers, no definida en estandard C
#include <stdlib.h>        //Librería de propósito general para gestión de memoria
#include <iostream>        //Librería de funciones de E/S de datos
#include <stdio.h>         //Librería de funciones E/S Estandard
#include <windows.h>       //Librería de compatibilidad con windows
#include <string.h>        //Definición de macros, constantes, funciones, etc
#include <winsock.h>       //Librería de manejo de sockets Winsock
#define ip "192.168.0.255" //IP del servidor (A la que conectar)
using namespace std;

void doEtherValue( long canal, long valor, XtraInfo * xtraInfo );
{
       int i;
       if ((canal<1) || (canal>512) || (valor>255) || (valor<0))
          {
          system("cls");
          cout<<"ERROR - Numero de canal o valor indicado fuera de rango\nPulsa cualquier tecla para continuar...";
          getch();
          }
       else
           {
           //ARRAY DE SECUENCIA
           char secuencia[1];
           //Aplicamos el valor secuencia al punto CERO, ya que los arrays se definen con el entero de su tamaño, pero su primer valor es el 0, no el 1
           secuencia[0]=0;
          
           //ARRAY DE VALORES DE CANALES
           int k;
           char valores[526];
           for (k=0; k<526; k++)
              {
              valores[k]=0;
              }
           //Asignación del valor al canal
               valores[canal-1]=valor;
          
           /*
            /////////////////////////////////////////////////////////////////////////////
            ||                                                                         ||
            ||                                                                         ||
            ||                            *******CONEXION*******                       ||
            ||                                                                         ||
            ||                                                                         ||
            /////////////////////////////////////////////////////////////////////////////
            */
          
           system("cls");//Borramos la pantalla para eliminar las lineas mostradas en el menú

          /* Primero abrimos el socket Winsock. Tenemos varias opciones para definir
          el tipo de socket que vamos a crear:
                Familia del protocolo:
                        AF_INET: Para conexión con máquinas conectadas a Internet
                        AF-UNIX: Para conexion con máquinas LINUX
                        AF_NS:   Para conexión con máquinas XEROX
                        AF_CCITT:Para conexión con protocolos CCITT,X25...
                Tipo de socket:
                        SOCKET_STREAM: Para TCP
                        SOCKET_DGRAM:  Para UDP
                        SOCKET_RAW:    Para IP
                Protocolo:
                        PPROTO_TCP: Como dice su nombre, para protocolo TCP
                        PPROTO_UDP: Como dice su nombre, para protocolo UDP

          Así pues para una conexión UDP normal, el código sería: */

          WSADATA wsa; // Winshock
          int sock;//Descriptor del socket.
          struct sockaddr_in direccion; //Datos del servidor a conectar

          WSAStartup(MAKEWORD(2,0),&wsa);

          /* -Después creamos una structura (struct), en la que definiremos el tipo de
           -protocolo a utilizar para la conexion,
           -despues el puerto por el que deve conectarse nuestro cliente y
           -por último la ip a la que conectara nuestro cliente. */
          
          char buf[531];       // Tamaño del mensaje a enviar
          int puerto=6454;     // puerto del servidor a conectar
        
          if((sock=socket(AF_INET,SOCK_DGRAM,0))==-1 )
             {
             // Creamos el socket mientras creamos el primer filtro de error
             printf("PROBLEMA AL CREAR EL SOCKET");
             getch();
             exit(0);
             }
          else
            {
            printf("SOCKET CREADO CORRECTAMENTE\n\n");
            /* Ahora procedemos a insertar la informacion en la structura.
             *** IMPORTANTE *** Es una structura especial para socket; sin_family, sin_port .... */
            
            // **** DATOS DE LA ESTRUCTURA CON LOS DATOS DE DESTINO
            direccion.sin_family=AF_INET; // AF_inet con el protocolo UDP (Información en el paso anterior)
            direccion.sin_port=htons(puerto); //Usamos HTONS para transformar el numero de puerto a uno entendible para el socket.
            direccion.sin_addr.s_addr=inet_addr(ip); // Y agregamos la IP
        
            /*
                Despues de crear el socket y la structura con los datos pertinentes,
                podemos conectar por fin al servidor, que en los sockets TCP se haría
                con CONNECT, pero en los UDP se hace bindeando el socket al cliente con
                BIND.
                
                Desglosado en partes, la línea siguiente se compone de:
                connect: Comando de conexión.
                sock: Define el socket que hemos creado en el paso 1
                struct sockaddr*:Aqui va la structura anteriormente paso 2 creada con todos los datos para conectar,ip,protocolo,puerto, (&dirrecion)
                sizeof: Utilizamos el operador sizeof para indicar la longuitud de la estructura
                Así es como queda la estructura final: connect(sock, (struct sockaddr*)&direccion,sizeof(direccion));
                
                A continuación definimos el socket:
                Bind: Crea la definición del socket que vamos a utilizar.
                Sock: Aqui va la structura anteriormente creada (struct sockaddr_in server;)con todos los datos del servidor,ip,protocolo,puerto) &server
                Sizeof: Utilizamos el operador sizeof para obtener la longuitud de la estructura
                Y el resultado es: bind(sock,(struct sockaddr *)&server,sizeof(server));
            */
              
            struct sockaddr_in me;
            memset(&me, 0, sizeof(me));
            me.sin_family = AF_INET;
            me.sin_addr.s_addr = htonl(INADDR_ANY);
            me.sin_port = htons(puerto);
        
            if (bind(sock, (struct sockaddr *)&me, sizeof(me))==-1)
                {
                puts("BIND FAILED - ERROR");
                }
            else
                {
                puts("BIND ASIGNADO CON EXITO");
                }
        
            /*
               Como las conexiones UDP no son orientadas a conexión, no podemos utilizar connect,
               ya que entraría en conflicto con bind. Así pues, lo dejamos comentado y listo para
               un posible socket TCP
            
               if(connect(sock,(struct sockaddr*)&direccion,sizeof(direccion))==-1)
                  {//conectamos al servidor aplicando el segundo filtro:
                  printf("ERROR AL CONECTAR");
                  getch();
                  exit(0);
                  }  
          
              //Confirmamos el éxito de la conexión
              printf("CONECTADO CORRECTAMENTE\n\n");
          
            */
          
            /*
            /////////////////////////////////////////////////////////////////////////////
            ||                                                                         ||
            ||                                                                         ||
            ||             DEFINICION DE LA CADENA DE DATOS A ENVIAR(buf)              ||
            ||                                                                         ||
            ||                                                                         ||
            /////////////////////////////////////////////////////////////////////////////
            */
          
            char total[531]; //Variable maestra en la que iremos introduciendo cada sección del paquete ArtNet Originalmente(531)
            char l_total; //Variable para introducir la suma de longitudes de los fragmentos del paquete
            char puntero; //Puntero para las operaciones de concatenación
            char cabecera[8]={65 , 114 , 116 , 45 , 78 , 101 , 116 , 0}; //Cabecera del paquete
            char opcode[2]={0, 80}; // OpCode (Originalmente 0 (El bit bajo primero) y 80)
            char version[2]={0 , 14}; //Indicador de la versión (Originalmente 0 y 14)
            char phisycal[1]={2}; //Subred. Originalmente 0
            char universo[2]={0 , 0}; //Define el universo en el que vamos a trabajar
            char lon_val[2]={2 , 0}; //Indice de la longitud de valores (Originalmente 2 y 0)  
            
            //Contamos el tamaño de cada cadena para obtener el tamaño final de la cadena de trabajo.
            const unsigned int array_sizes[] = {sizeof(cabecera) , sizeof(opcode) , sizeof(version) , sizeof(secuencia) , sizeof(phisycal) , sizeof(universo) , sizeof(lon_val) , sizeof(valores)};
          
            //Definimos los arrays y punteros para concatenar las cadenas
            char *arrays[] = {
                    cabecera,
                    opcode,
                    version,
                    (char*) secuencia,
                    phisycal,
                    universo,
                    lon_val,
                    (char*) valores};
              
            unsigned int i, bytes_copiados, total_bytes;
          
           //Realizamos la copia de las cadenas
           for(i = total_bytes = 0; i < sizeof(arrays) / sizeof(char *); total_bytes += array_sizes[i], i++);
          
           char *mensaje = (char *) malloc (total_bytes);
          
           //Aplicamos un filtro de error que indique un posible overflow
           if(!mensaje){
                        perror("Error al reservar memoria");
                        getch();
           }
           //Aplicamos la copia con la función memcpy
           for(i = bytes_copiados = 0; i < sizeof(array_sizes) / sizeof(int); bytes_copiados += array_sizes[i], i++)
           memcpy(mensaje + bytes_copiados, arrays[i], array_sizes[i]);
          
           //Mostramos el array de almacenaje (mensaje) e introducimos los datos en la cadena final
           cout<<"Estos son los datos enviados:"<<"\n\n";
           //Bucle de asignación de bytes al array de envio
           for(i = 0; i < total_bytes; i++)
                {
                //Mostramos en pantalla el byte
                printf("%d ", (unsigned char) mensaje[i]);
                //Copiamos ese mismo byte en el array de envio
                buf[i]=("%d ", (unsigned char) mensaje[i]);
                }
                
           cout<<"\nTotal de bytes:"<<total_bytes<<"\n";
        
           free(mensaje);
          
           /*Comprobamos que los datos se han transmitido correctamente al array de trabajo buf:
          
           cout<<"\n\nCOMPROBACION\n\n";
           for (i=0; i<531; i++)
               cout<<buf[i]<<" ";
          */
          
          /*
          /////////////////////////////////////////////////////////////////////////////
          ||                                                                         ||
          ||                                                                         ||
          ||          ENVIO DE DATOS AL DISPOSITIVO Y CIERRE DE CONEXIÓN             ||
          ||                                                                         ||
          ||                                                                         ||
          /////////////////////////////////////////////////////////////////////////////
        
          Ahora que ya estamos conectados al servidor,ya podemos enviarle informacion con la funcion (send).
          Este sería el caso de un socket TCP. Al ser un socket UDP, utilizamos la función sendto, que tiene
          una sintaxis distinta. Estos son sus elementos y las diferentes sintaxis de uso de las dos funciones:
            
                send: definicion del socket que creamos en el paso 1
                buf:variable con la informacion a enviar
                Sizeof: Utilizamos el operador sizeof para indicar la longuitud de la variable
                Flag: lo dejamos en 0
          El resultado final:
              
               PARA SEND:
                    send(sock,buf,sizeof(buf),0);
              
               PARA SENDTO:
                    (sock,buf,sizeof(buf),0,(struct sockaddr*)&receiver_addr,sizeof(receiver_addr));

          */
        
              if(sendto(sock,buf,sizeof(buf),0,(struct sockaddr*)&direccion,sizeof(direccion))==-1)
                 {//Aplicamos el filtro de error de envio
                 printf("ERROR ENVIANDO");
                 getch();
                 exit(0);
                 }
              else
                  {//Confirmamos el éxito del envío
                   closesocket(sock);
                   //puts("\nMensaje enviado, pulsa una tecla para continuar");
                   //getch();
                  }
               };
           }
};

void doEtherRangeValue( long canal_1, long canal_2, long valor, XtraInfo * xtraInfo );
 {
       int i;
       if ((canal_a<1) || (canal_a>512) || (canal_b>512) || (canal_a>canal_b) || (valor>255) || (valor<0))
          {
          system("cls");
          cout<<"ERROR - Numero de canal o valor indicado fuera de rango\nPulsa cualquier tecla para continuar...";
          getch();
          }
       else
           {
           //ARRAY DE VALORES DE CANALES
           int k;
           char valores[526];
           for (k=0; k<526; k++)
              {
              valores[k]=0;
              }
           //ARRAY DE SECUENCIA
           char secuencia[1];
           //Aplicamos el valor secuencia al punto CERO, ya que los arrays se definen con el entero de su tamaño, pero su primer valor es el 0, no el 1
           secuencia[0]=0;
           //Bucle de asignación de valores del rango
           for (i=(canal_a-1); i<(canal_b); i++)
               {
               valores[i]=valor;
               }
          
           /*
            /////////////////////////////////////////////////////////////////////////////
            ||                                                                         ||
            ||                                                                         ||
            ||                            *******CONEXION*******                       ||
            ||                                                                         ||
            ||                                                                         ||
            /////////////////////////////////////////////////////////////////////////////
            */
          
           system("cls");//Borramos la pantalla para eliminar las lineas mostradas en el menú

          /* Primero abrimos el socket Winsock. Tenemos varias opciones para definir
          el tipo de socket que vamos a crear:
                Familia del protocolo:
                        AF_INET: Para conexión con máquinas conectadas a Internet
                        AF-UNIX: Para conexion con máquinas LINUX
                        AF_NS:   Para conexión con máquinas XEROX
                        AF_CCITT:Para conexión con protocolos CCITT,X25...
                Tipo de socket:
                        SOCKET_STREAM: Para TCP
                        SOCKET_DGRAM:  Para UDP
                        SOCKET_RAW:    Para IP
                Protocolo:
                        PPROTO_TCP: Como dice su nombre, para protocolo TCP
                        PPROTO_UDP: Como dice su nombre, para protocolo UDP

          Así pues para una conexión UDP normal, el código sería: */

          WSADATA wsa; // Winshock
          int sock;//Descriptor del socket.
          struct sockaddr_in direccion; //Datos del servidor a conectar

          WSAStartup(MAKEWORD(2,0),&wsa);

          /* -Después creamos una structura (struct), en la que definiremos el tipo de
           -protocolo a utilizar para la conexion,
           -despues el puerto por el que deve conectarse nuestro cliente y
           -por último la ip a la que conectara nuestro cliente. */
          
          char buf[531];       // Tamaño del mensaje a enviar
          int puerto=6454;     // puerto del servidor a conectar
        
          if((sock=socket(AF_INET,SOCK_DGRAM,0))==-1 )
             {
             // Creamos el socket mientras creamos el primer filtro de error
             printf("PROBLEMA AL CREAR EL SOCKET");
             getch();
             exit(0);
             }
          else
            {
            printf("SOCKET CREADO CORRECTAMENTE\n\n");
            /* Ahora procedemos a insertar la informacion en la structura.
             *** IMPORTANTE *** Es una structura especial para socket; sin_family, sin_port .... */
            
            // **** DATOS DE LA ESTRUCTURA CON LOS DATOS DE DESTINO
            direccion.sin_family=AF_INET; // AF_inet con el protocolo UDP (Información en el paso anterior)
            direccion.sin_port=htons(puerto); //Usamos HTONS para transformar el numero de puerto a uno entendible para el socket.
            direccion.sin_addr.s_addr=inet_addr(ip); // Y agregamos la IP
        
            /*
                Despues de crear el socket y la structura con los datos pertinentes,
                podemos conectar por fin al servidor, que en los sockets TCP se haría
                con CONNECT, pero en los UDP se hace bindeando el socket al cliente con
                BIND.
                
                Desglosado en partes, la línea siguiente se compone de:
                connect: Comando de conexión.
                sock: Define el socket que hemos creado en el paso 1
                struct sockaddr*:Aqui va la structura anteriormente paso 2 creada con todos los datos para conectar,ip,protocolo,puerto, (&dirrecion)
                sizeof: Utilizamos el operador sizeof para indicar la longuitud de la estructura
                Así es como queda la estructura final: connect(sock, (struct sockaddr*)&direccion,sizeof(direccion));
                
                A continuación definimos el socket:
                Bind: Crea la definición del socket que vamos a utilizar.
                Sock: Aqui va la structura anteriormente creada (struct sockaddr_in server;)con todos los datos del servidor,ip,protocolo,puerto) &server
                Sizeof: Utilizamos el operador sizeof para obtener la longuitud de la estructura
                Y el resultado es: bind(sock,(struct sockaddr *)&server,sizeof(server));
            */
              
            struct sockaddr_in me;
            memset(&me, 0, sizeof(me));
            me.sin_family = AF_INET;
            me.sin_addr.s_addr = htonl(INADDR_ANY);
            me.sin_port = htons(puerto);
        
            if (bind(sock, (struct sockaddr *)&me, sizeof(me))==-1)
                {
                puts("BIND FAILED - ERROR");
                }
            else
                {
                puts("BIND ASIGNADO CON EXITO");
                }
        
            /*
               Como las conexiones UDP no son orientadas a conexión, no podemos utilizar connect,
               ya que entraría en conflicto con bind. Así pues, lo dejamos comentado y listo para
               un posible socket TCP
            
               if(connect(sock,(struct sockaddr*)&direccion,sizeof(direccion))==-1)
                  {//conectamos al servidor aplicando el segundo filtro:
                  printf("ERROR AL CONECTAR");
                  getch();
                  exit(0);
                  }  
          
              //Confirmamos el éxito de la conexión
              printf("CONECTADO CORRECTAMENTE\n\n");
          
            */
          
            /*
            /////////////////////////////////////////////////////////////////////////////
            ||                                                                         ||
            ||                                                                         ||
            ||             DEFINICION DE LA CADENA DE DATOS A ENVIAR(buf)              ||
            ||                                                                         ||
            ||                                                                         ||
            /////////////////////////////////////////////////////////////////////////////
            */
          
            char total[531]; //Variable maestra en la que iremos introduciendo cada sección del paquete ArtNet Originalmente(531)
            char l_total; //Variable para introducir la suma de longitudes de los fragmentos del paquete
            char puntero; //Puntero para las operaciones de concatenación
            char cabecera[8]={65 , 114 , 116 , 45 , 78 , 101 , 116 , 0}; //Cabecera del paquete
            char opcode[2]={0, 80}; // OpCode (Originalmente 0 (El bit bajo primero) y 80)
            char version[2]={0 , 14}; //Indicador de la versión (Originalmente 0 y 14)
            char phisycal[1]={2}; //Subred. Originalmente 0
            char universo[2]={0 , 0}; //Define el universo en el que vamos a trabajar
            char lon_val[2]={2 , 0}; //Indice de la longitud de valores (Originalmente 2 y 0)  
            
            //Contamos el tamaño de cada cadena para obtener el tamaño final de la cadena de trabajo.
            const unsigned int array_sizes[] = {sizeof(cabecera) , sizeof(opcode) , sizeof(version) , sizeof(secuencia) , sizeof(phisycal) , sizeof(universo) , sizeof(lon_val) , sizeof(valores)};
          
            //Definimos los arrays y punteros para concatenar las cadenas
            char *arrays[] = {
                    cabecera,
                    opcode,
                    version,
                    (char*) secuencia,
                    phisycal,
                    universo,
                    lon_val,
                    (char*) valores};
              
            unsigned int i, bytes_copiados, total_bytes;
          
           //Realizamos la copia de las cadenas
           for(i = total_bytes = 0; i < sizeof(arrays) / sizeof(char *); total_bytes += array_sizes[i], i++);
          
           char *mensaje = (char *) malloc (total_bytes);
          
           //Aplicamos un filtro de error que indique un posible overflow
           if(!mensaje){
                        perror("Error al reservar memoria");
                        getch();
           }
           //Aplicamos la copia con la función memcpy
           for(i = bytes_copiados = 0; i < sizeof(array_sizes) / sizeof(int); bytes_copiados += array_sizes[i], i++)
           memcpy(mensaje + bytes_copiados, arrays[i], array_sizes[i]);
          
           //Mostramos el array de almacenaje (mensaje) e introducimos los datos en la cadena final
           cout<<"Estos son los datos enviados:"<<"\n\n";
           //Bucle de asignación de bytes al array de envio
           for(i = 0; i < total_bytes; i++)
                {
                //Mostramos en pantalla el byte
                printf("%d ", (unsigned char) mensaje[i]);
                //Copiamos ese mismo byte en el array de envio
                buf[i]=("%d ", (unsigned char) mensaje[i]);
                }
                
           cout<<"\nTotal de bytes:"<<total_bytes<<"\n";
        
           free(mensaje);
          
           /*Comprobamos que los datos se han transmitido correctamente al array de trabajo buf:
          
           cout<<"\n\nCOMPROBACION\n\n";
           for (i=0; i<531; i++)
               cout<<buf[i]<<" ";
          */
          
          /*
          /////////////////////////////////////////////////////////////////////////////
          ||                                                                         ||
          ||                                                                         ||
          ||          ENVIO DE DATOS AL DISPOSITIVO Y CIERRE DE CONEXIÓN             ||
          ||                                                                         ||
          ||                                                                         ||
          /////////////////////////////////////////////////////////////////////////////
        
          Ahora que ya estamos conectados al servidor,ya podemos enviarle informacion con la funcion (send).
          Este sería el caso de un socket TCP. Al ser un socket UDP, utilizamos la función sendto, que tiene
          una sintaxis distinta. Estos son sus elementos y las diferentes sintaxis de uso de las dos funciones:
            
                send: definicion del socket que creamos en el paso 1
                buf:variable con la informacion a enviar
                Sizeof: Utilizamos el operador sizeof para indicar la longuitud de la variable
                Flag: lo dejamos en 0
          El resultado final:
              
               PARA SEND:
                    send(sock,buf,sizeof(buf),0);
              
               PARA SENDTO:
                    (sock,buf,sizeof(buf),0,(struct sockaddr*)&receiver_addr,sizeof(receiver_addr));

          */
        
              if(sendto(sock,buf,sizeof(buf),0,(struct sockaddr*)&direccion,sizeof(direccion))==-1)
                 {//Aplicamos el filtro de error de envio
                 printf("ERROR ENVIANDO");
                 getch();
                 exit(0);
                 }
              else
                  {//Confirmamos el éxito del envío
                   closesocket(sock);
                   //puts("\nMensaje enviado, pulsa una tecla para continuar");
                   //getch();
                  }
               };
           }
       };

La parte de la conexión está repetida en las dos funciones porque estas han de ser "autónomas", pero no creo que eso tenga que ver con mi problema  :huh:

Gracias por la ayuda.

EI: juntando mensajes.

¿Nadie sabe cual puede ser el problema? Es extraño porque a veces avisa de "error" en cosas que parecen iguales (el uso de la variable valor dentro de una función, cuando valor ha sido declarado al declarar la función, hay sitios donde no da error y otros donde dice que valor no ha sido declarado, dentro de la función, un par de lineas más abajo de donde lo ha usado sin problema alguno!) o incluso en el uso de sentencias for, closesocket, system...

He intentado jugando con los espacios, añadiendo ; al final de los for (cosa que no es necesaria, al menos en Dev-C++) por descartar, pero los problemas siguen ahí. ¿Quizá esten mal declaradas las librerías? ¿La sintaxis es menos transigente en Visual Studio con el tema de espacios, o me falta algo importante?

Agradecería mucho un poco de ayuda, porque con este problema estoy muy estancado  :huh:

Gracias y un saludo. :laugh:
« Última modificación: 25 Mayo 2012, 17:14 pm por Eternal Idol » En línea

exel

Desconectado Desconectado

Mensajes: 50



Ver Perfil
Re: Portar código de dev-c++ a Visual Studio
« Respuesta #3 en: 25 Mayo 2012, 19:58 pm »

Solo he visto los errores lexicos y sintacticos:

Citar
void doEtherValue( long canal, long valor, XtraInfo * xtraInfo );
void doEtherRangeValue( long canal_1, long canal_2, long valor, XtraInfo * xtraInfo );
Supuestamente estas definiendo la funcion, no declarando un prototipo. Por lo tanto, los ; antes del { no deben estar


Las declaraciones de variables locales es al principio de cualquier bloque {...}


Linea 188... para ser mas legible, el ; del final es para no hacer nada en el cuerpo del ciclo for, pues deja un salto de linea entre ) y ;


Al final supuestamente estas cerrando el cuerpo de dos bifurcaciones else y la definicion de la funcion doEtherValue. Los ; que siguen a cada } no deben estar


Al final supuestamente estas cerrando el cuerpo de dos bifurcaciones else y la definicion de la funcion doEtherRangeValue. Los ; que siguen a cada } no deben estar


En la funcion doEtherRangeValue, ¿donde declaraste canal_a y canal_b?, quisas te refieres a canal_1 y canal_2 de los parametros de la funcion


No me he fijado en los nombres de las variables que usas, pero si no esta en los parametros de la funcion, no esta declarada dentro de la funcion, no esta declarada como global o no esta prototipada como extern, entonces no existe


¿Estas seguro que eso compila en Dev-C++?, de cualquier manera, los errores saltan a la vista.

Saludos
En línea

VladisMSX1

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: Portar código de dev-c++ a Visual Studio
« Respuesta #4 en: 29 Mayo 2012, 09:48 am »

 :-[ :-[ :-[ No había visto el ; justo al final de la declaración de las funciones. El caso es que en mi código en Dev-C++ no está (sino, lógicamente, no compilaría) así que acabo de alucinar. No lo he visto sencillamente porque no esperaba que ahí hubiera un ; y ni me había fijado. Madre mía.... :-[

De un plumazo han desaparecido un montón de errores, entre ellos los que decían que las variables no estaban declaradas (de ahí que no le viera sentido)

Las variables de canal_a y canal_b están bien declaradas en mi código en Dev-C++. Lógicamente canal_1 debería ser canal_a.

En fin, fallazos de novato matao... creo que tenía tal dolor de cabeza que no he visto esos fallos aunque saltaban a la vista :huh: a ver si ahora la cosa funciona mejor.

Muchas gracias!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines