|
622
|
Programación / Programación C/C++ / Re: No puedo declarar la variable por ser un tipo abstracto
|
en: 12 Marzo 2017, 17:39 pm
|
En directorio de includes, debes poner "include", no "include/openssl". Sí, las cabeceras están en "include/openssl", pero accedes a ellas poniendo #include <openssl/aes.h>. Esto se hace o para diferenciar diferentes librerías que puedan tener cabeceras con el mismo nombre, o separar en carpetas, sin más. En cualquier caso, y de forma general, siempre pondrás como directorio "include", y no la carpeta que pueda tener dentro. Además, en este caso estás casi obligado, ya que las propias cabeceras utilizan la fórmula #include <openssl/aes.h>.
|
|
|
623
|
Programación / Programación C/C++ / Re: No puedo declarar la variable por ser un tipo abstracto
|
en: 12 Marzo 2017, 17:28 pm
|
En VS, click derecho en el proyecto, propiedades. Ahí tienes, dentor de "Configuration properties", la pestaña "C/C++ -> General". Dentro de esta, Additional include directories.
Luego, para el linker, si el proyecto se va a linkear, debajo de "C/C++", tienes "Linker". Ene sta, teines "General" también. Ahí, "Additional library dependencies". Luego, en "Linker -> Input", tienes "Additional dependencies".
|
|
|
625
|
Programación / Programación C/C++ / Re: No puedo declarar la variable por ser un tipo abstracto
|
en: 12 Marzo 2017, 16:33 pm
|
El error es auto-explicativo. Esa cabecera tiene un include dentro que parece no existir. Mira el código de la cabecera, mira e include, y mira si existe. Si existe, tal vez hayas puesto algo mal en la configuración del IDE al compilar.
Aunque bueno, alerta spoiler: Probablemente pusiste que el directorio de los includes es "include/openssl". Eso es incorrecto. El directorio de los include es "include", sin más. Para incluir cabeceras de OpenSSL, tienes que poner "#include <openssl/...>". Por ejemplo, #include <openssl/aes.h>
Si ves el código de la cabecera del error, verás que tiene un: #include <openssl/opensslconf.h>
|
|
|
628
|
Programación / Programación C/C++ / Re: Saber que SO tiene la maquina a trabajar
|
en: 8 Marzo 2017, 23:58 pm
|
Si compilas para Windows, pues tendrás que compilar para Windows. Si compilas para Unix, pues lo mismo. Los programas compilados rara vez podrán ser ejecutados en múltiples sistemas operativos (salvando alguna excepción, como Wine) Por tanto, una aplicación ya compilada tiene commo destino 1 sistema operativo genralmente. Si vas a compilar para varios, entonces puedes usar directivas del preprocesador tipo: #ifdef _WIN32 const char* SO = "Windows"; #else const char* SO = "Otro"; #endif
Aquí tienes una lista de macros definidos para cada sistema operativo: https://sourceforge.net/p/predef/wiki/OperatingSystems/Si bien no es estándar, en la mayoría de compiladores importantes los verás definidos.
|
|
|
629
|
Programación / Programación C/C++ / Re: [Problema Reto C/C++] Sumatoria de Rangos de Impares
|
en: 8 Marzo 2017, 23:09 pm
|
Yo si no está ofuscado, no me parece correcto. #include <cstdio> int getResult(int a, int b){ return (b*b+(b&1)*(b*2+1)-a*a+(a&1)*(a*2-1))>>2; } int main(){ printf("%i\n",getResult(5, 20)); printf("%i\n",getResult(5, 19)); printf("%i\n",getResult(4, 20)); printf("%i\n",getResult(4, 20)); }
|
|
|
630
|
Programación / Programación C/C++ / Re: [c++11] ¿Como pasar n argumentos a una función?
|
en: 8 Marzo 2017, 18:40 pm
|
Ya que lso números son contiguos de 0 a N, en vez de un map, tal vez te interese utilizar un vector o una list.
A parte de eso, sobre el método variadic, lo dicho. Si puedes, pon un ejemplo de cómo usarías el método variadic con una cantidad indefinida de argumentos. No digo que lo hagas, sinó que lo utilices como si existiera para saber qué quieres hacer con él.
|
|
|
|
|
|
|