Hola buenas.
Verán, estoy aprendiendo C con OSLib y tengo la siguiente duda:
Estoy intentando desarrollar un OS y necesito modularlo. Para ello creo el módulo "wallpaper" y dentro creo alguna variable y dos funciones. Una función es para cargar el módulo y la otra para imprimir el wallpaper.
Tengo un código pero no me funciona. Me da una serie de errores.
#include <oslib/oslib.h> PSP_MODULE_INFO( "Prueba", 0, 1, 1 ); PSP_MAIN_THREAD_ATTR( THREAD_ATTR_USER | THREAD_ATTR_VFPU ); int wallpaper[2] = { int k = 1, void cargar( self ) { OSL_IMAGE *self.img; img = oslLoadImageFile( "system/image/wallpaper/wallpaper.png", OSL_IN_RAM, OSL_PF_8888 ); self.img->x = 0; self.img->y = 0; }, int blit( self ) { while( self.k == 1 ){ self:cargar(); self.k = 0; } oslDrawImage( self.img ); }, } int main(){ oslInit( 0 ); oslInitGfx( OSL_PF_8888, 0 ); while( !osl_quit ) { wallpaper:blit(); oslEndDrawing(); oslSyncFrame(); } oslEndGfx(); oslQuit(); return 0; }
TARGET = iNextOS OBJS = main.o INCDIR = CFLAGS = -G4 -Wall -O2 CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti ASFLAGS = $(CFLAGS) LIBDIR = LDFLAGS = STDLIBS= -losl -lpng -lz \ -lpspsdk -lpspctrl -lpspumd -lpsprtc -lpsppower -lpspgu -lpspaudiolib -lpspaudio -lm LIBS=$(STDLIBS)$(YOURLIBS) EXTRA_TARGETS = EBOOT.PBP PSP_EBOOT_TITLE = iNext OS PSPSDK=$(shell psp-config --pspsdk-path) include $(PSPSDK)/lib/build.mak
Espero que me puedan ayudar.
Saludos.
uno que otro error de tipeo
uno que otro error de tipeo tuy como
esto por
Saludos no eh revisado el code compilado pero eh visto que tenias comas donde deberian ir ; y , despues de } Saludos
TEAM MEX Homebrew y desarrollo PSP
Metal TrooperV.Pre-Alpha (15%)Lua , 10% C .
Ubunshell VProof. (45%)C
RPG Magues (35%)Lua , 5% C
Android development for Xperia X8 ^^ mis roms en XDA-Developers ya que en Scenebeta no las publican xD
Xperience | MIUI Pikachu | Semc debrand engine | Froyexp | Xperience walkman mod | Android 4.0.4 CN9 Crema de nieve
-- KLOZZ
Se puede hacer mas facilmente
~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~
Bien, como veras es muy
Bien, como veras es muy parecido a como se declara una variable normal, sólo que hay que poner corchetes detrás del tipo. Los programadores de C/C++ habrán observado inmediatamente la diferencia sintáctica. En efecto, en la declaración de un array en C los corchetes se colocan detrás del tipo y no detrás de la variable. Esta pequeña diferencia sintáctica se debe a una importante diferencia semántica: aquí los arrays son objetos derivados de la clase System.Array. Por lo tanto, y esto es muy importante, cuando declaramos un array en C este aún no se habrá creado, es decir, no se habrá reservado aún memoria para él. En consecuencia, los arrays de C son todos dinámicos, y antes de poder usarlos habrá que instanciarlos, como si fuera cualquier otro objeto. Veamos un breve ejemplo de lo que quiero decir:
En efecto, tal como puedes ver, el array nombres será utilizable únicamente a partir de su instanciación. En este ejemplo, el número 3 que está dentro de los corchetes indica el número total de elementos de que constará el array. No te vallas a equivocar, puesto que todos los arrays de C están basados en cero, esto es, el primer elemento del array es cero. Por lo tanto, en este caso, el último elemento sería 2 y no 3, ya que son tres los elementos que lo componen (0, 1 y 2).
En C no puedes manejar así
En C no puedes manejar así los arrays, eso sólo es en Lua xD
¿Me podrías dar un ejemplo de
¿Me podrías dar un ejemplo de como modular en C con OSLib? ¿Como meter las funciones dentro del array?
Gracias.
¿Funciones dentro de arrays?
Que mal acostumbrados os tiene Lua. Aprender a programar en un lenguaje poco tipado y que te deja hacer casi cualquier cosa, no son los mejores inicios xD. Creo (y corregirme si me equivoco) que en Lua la sintaxis de los corchetes aparte de para arrays se reutilizan para declarar tablas, que tambien pueden funcionar casi como si fuesen objetos, pudiendo meter en ellas lo que quieras. En C (aunque tampoco es un lenguaje muy tipado, pero si algo) no se puede hacer eso, en el codigo que has puesto has declarado un array de 2 enteros, en el que solo pueden ir enteros (en teoria, ya que con casts y punteros puedes guardar cualquier cosa, pero no lo recomiendo). Una "guarreria" que puedes hacer que se me ocurre, aunque no te la recomiendo y nose si funciona porque no la he probado ni lo voy a hacer, es meter punteros a funciones, aunque dudo que funciona, mejor simplemente ten un metodo que cargue o muestre el wallpaper. Tampoco se lo que hace la libreria OSlib, pero en C puro, lo que tu quieres hacer no se puede hacer.
Con lo facil que//
es haciendo una funcion que carge el wallpaper y lo pongas en pantalla, no he probado lua pero lo mejor es que te olvides de LUA, y busques un tuto de C
~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~
Solo es curiosidad, por que
Solo es curiosidad, por que te pasa de LuaDev a C?
Por la gran potencia de C.
Por la gran potencia de C.
toma, 4 scenebitos :D
4 scenebitos para ti