Sunteți pe pagina 1din 7

Buffer: Espacio de memoria fija para almacenar datos, por ejemplo para guardar una imagen y no

estar carga y descarga la imagen de memoria.

Memset:

function
<cstring>

memset
void * memset ( void * ptr, int value, size_t num );

Fill block of memory


num bytes of the block of memory pointed by ptr to the specified value (interpreted as an
unsigned char).

Parameters
ptr
Pointer to the block of memory to fill.
value
Value to be set. The value is passed as an int, but the function fills the block of memory
using the unsigned char conversion of this value.
num
Number of bytes to be set to the value.
size_t is an unsigned integral type.

Return Value
ptr is returned.

Example
1 /* memset example */
2 #include <stdio.h>
3 #include <string.h>
4
5 int main ()
6 {
7 char str[] = "almost every programmer should know memset!"; Edit & Run
8 memset (str,'-',6);
9 puts (str);
10 return 0;
11 }

Output:

------ every programmer should know memset!


Directivas #ifdef, #ifndef
1 Sintaxis
#ifdef identificador
#ifndef identificador

2 Descripcin
Las directivas #ifdef y #ifndef son condicionales especializadas para comprobar si un macro-
identificador est definido o no. La mecnica es la misma que con #if, #elif, #endif ( 4.9.10d).

Tenga en cuenta que un macro-identificador X se define con #define X y se indefine con


#undef X ( 4.9.10i), con lo que podemos controlar a voluntad la zonas de cdigo en que se
considera definido e indefinido.
Nota: La existencia semntica del identificador (el hecho de que est definido o no), es
independiente del valor concreto que pudiera tener asignado. Como veremos a continuacin, incluso
si se le asigna el valor nulo, el identificador se considera definido.

Un identificador definido como NULL es considerado definido. Por ejemplo:

#define nulo NULL

3 Ejemplo
#define isSp // Flag Espaol/Ingls
#ifdef isSp
# include "ztr--Sp.CH"
#define VComP "C.000621Sp"
#else
# include "ztr--Us.CH"
#define VComP "C.000621Us"
#endif
....
....
#undef isSp // A partir de aqu, isSp se considera indefinido
....
....

4 Directivas de guarda
Tenga en cuenta que el lenguaje C++ es muy proclive a que se cometan cierto tipo de errores al
trabajar con ficheros de cabecera (es seguro que ocurrir a menudo). Por ejemplo, supongamos que
tenemos una clase denominada Hotel que utiliza una clase denominada Suite y que cada una de
estas clases utiliza el mismo fichero de cabecera, por ejemplo ZonasHotel.h [2]. En este caso es
ms que posible que recibamos un error de compilacin del tipo
... Multiple declaration for 'FILE' ...
indicndonos que estamos redefiniendo los smbolos de ZonasHotel.h la segunda vez que la
cabecera es incluida.
Una solucin es disponer el cdigo como se indica:
#ifndef zonasH
#include "ZonasHotel.h"
#define zonasH // Nota [3]
#endif
... // aqu sigue el cdigo del programa
Sin embargo, esta disposicin tiene el inconveniente de que tenemos que acordarnos de definir
zonasH cada vez que vayamos a incluir la cabecera. Si lo olvidamos, volver a producirse el error
(esto es muy probable en ambientes donde trabajan varios programadores en el mismo proyecto).
Una solucin ms elegante, que recomendamos, es utilizar la disposicin anterior dentro del propio
fichero de cabecera. En nuestro caso, el fichero ZonasHotel.h tendra el siguiente aspecto:
#ifndef zonasH

... contenido del fichero

#define zonasH
#endif

Si analizan con detenimiento los ficheros de cabecera de su compilador C++, comprobar que las
directivas descritas en este epgrafe son utilizadas con profusin, y como a pesar de que estn llenas
de declaraciones, la inclusin dos veces de una misma cabecera no produce ningn error de
compilacin. La razn es que los fabricantes de compiladores utilizan el truco anterior. Como
ejemplo, tomamos la cabecera <stdio.h> del compilador Borland C++ 5.5, que incluye una gran
seccin cuyo aspecto esquemtico es el siguiente:
...
#ifndef __STDIO_H
#define __STDIO_H
....
typedef struct {
...
} FILE;
...
#endif // __STDIO_H
...
Si se coloca la directiva #include <stdio.h> en un fuente, la primera vez que el preprocesador
pasa por la directiva ifndef, la macro __STDIO_H, que no est definida [1], se define en la
siguiente lnea, as como la estructura FILE. La segunda vez que se incluyera esta cabecera, el
preprocesador se encontrara con que la macro __STDIO_H ya est definida, por lo que se
saltara toda la seccin hasta el endif correspondiente. De no haberse hecho as se obtendra el error
antes mencionado. Por esta razn, este tipo de directivas condicionales, que se utilizan para que no
se produzcan declaraciones mltiples, se denominan directivas de guarda.

Nota: el compilador MS VC++ dispone de una pragma ( 4.9.10i) especfica para este fin:
#pragma once. Sirve para indicar al compilador que el fichero en que reside dicha directiva, debe
ser incluido solo una vez en cada compilacin. Por supuesto esta directiva se coloca dentro del
fichero de cabecera que deseamos no se repita. La forma de uso es la siguiente:
//Fichero ZonasHotel.h que deseamos no se repita
#pragma once
... contenido del fichero

Otra posibilidad para formar directivas de guarda es la utilizacin del operador defined (
4.9.10d). Por ejemplo, el cdigo que sigue comprueba si la constante simblica ZONASH ha sido
definida. Si no lo ha sido, se define para veces sucesivas y se compila el cdigo subsiguiente. En
caso contrario (si el cdigo ya ha sido incluido en la compilacin), todo el bloque es ignorado por el
compilador.
// ZonasHotel.h Ejemplo de fichero de cabecera

#if !defined( ZONASH )


#define ZONASH

class MiClase {
...
};

#endif
http://www.cplusplus.com/reference/cstdio/vsprintf/
https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/Funciones
macro
<cstdarg>

va_start
void va_start (va_list ap, paramN);

Initialize a variable argument list


ap to retrieve the additional arguments after parameter paramN.

A function that invokes va_start, shall also invoke va_end before it returns.

Parameters
ap
Uninitialized object of type va_list.
After the call, it carries the information needed to retrieve the additional arguments using
va_arg.
If ap has already been passed as first argument to a previous call to va_start or va_copy,
it shall be passed to va_end before calling this function.
paramN
Name of the last named parameter in the function definition. The arguments extracted by
subsequent calls to va_arg are those after paramN.
C
C++

The parameter shall not be a parameter declared with register storage class, with function
or array type, or with a type that is not compatible with the type that results after application
of the default argument promotions.

Return Value
none

Example
1 /* va_start example */
2 #include <stdio.h> /* printf */
3 #include <stdarg.h> /* va_list, va_start, va_arg, va_end */
4
5 void PrintFloats (int n, ...)
6 {
7 int i; Edit & Run
8 double val;
9 printf ("Printing floats:");
10 //crea una lista vacias
11 va_list vl;
12 //llena la lista creo con todos los valores de los parametros
13 va_start(vl,n);
for (i=0;i<n;i++)
{
//retorna el valor del elemento de la lista, por ejemplp
14
//puedes ser el elemnto 1, o 6, es como ir manejando el indice
15
val=va_arg(vl,double);
16
printf (" [%.2f]",val);
17
}
18
//libera la lista de memoria creo
19
va_end(vl);
20
printf ("\n");
21
}
22
23
int main ()
24
{
25
PrintFloats (3,3.14159,2.71828,1.41421);
return 0;
}

The function PrintFloats takes the number of additional arguments as first argument (n),
which are then sequentially read using the cstdarg macro and printed out with a specific format.

Output:
Printing floats: [3.14] [2.72] [1.41]

See also
va_arg
Retrieve next argument (macro )

va_end
End using variable argument list (macro )

va_list
Type to hold information about variable arguments (type )

vsprintf
Write formatted data from variable argument list to string (function )
PARA OCUPAR LA LIBRERIA DE DIBUJO EN PSVITA

Siempre es 0 los otros dos parametros no se bien.


sceCtrlPeekBufferPositive(0, &pad, 1);

int sceCtrlPeekBufferPositive ( int port,


SceCtrlData * pad_data,
int count
)
Get the controller state information (polling, positive logic).
Parameters:
[in] port - use 0.
[out] *pad_data - see SceCtrlData.
[in] count - Buffers count.
Returns:
Buffers count, between 1 and 'count'. <0 on error.

S-ar putea să vă placă și