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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Creando nuevas keywords para C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Creando nuevas keywords para C  (Leído 1,222 veces)
MAFUS


Desconectado Desconectado

Mensajes: 1.575



Ver Perfil
Creando nuevas keywords para C
« en: 30 Julio 2019, 17:51 pm »

El otro día, mientras aprendía Python, me fijé en foreach y range. Me pregunté si en C se podía tener una expresión parecida.

Y llegué a este ejemplo básico.

Código
  1. #include <stdio.h>
  2.  
  3. // Desde 1 hasta top. Haz lo que quiereas con el valor en medio ------------------------------
  4. #define foreach(var, top) for(int foreach_var = (top); var = f(foreach_var); foreach_var = 0)
  5.  
  6. int f(unsigned number) {
  7.    static unsigned top;
  8.    static unsigned actual;
  9.  
  10.    if(number != 0) {
  11.        top = number;
  12.        actual = 0;
  13.    }
  14.  
  15.    if(actual == top)
  16.        return 0;
  17.  
  18.    return ++actual;
  19. }
  20. // -------------------------------------------------------------------------------------------
  21.  
  22. int main(){
  23.    int x;
  24.  
  25.    /* Nueva funcionalidad */
  26.    foreach(x, 5) {
  27.        printf("%d\n", x);
  28.    }
  29. }

Lo dicho, es básico, pero se podría ir mejorando o hacer otras cosas, por supuesto.


En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Creando nuevas keywords para C
« Respuesta #1 en: 30 Julio 2019, 18:17 pm »

Usar variables static en la funcion evita que 2 foreach se puedan anidar correctamente.
Tal como esta, anidar foreach hara que la ultima aparicion de foreach cobre prepronderancia respecto a la o las anteriores.

Propongo evitar completamente la funcion y hacer

Código:
#define foreach(var,top) for(var=0; var < top; var++)

(cambiando los valores de inicializacion y corte dependiendo de lo que se quiera)


« Última modificación: 31 Julio 2019, 02:51 am por CalgaryCorpus » En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
MAFUS


Desconectado Desconectado

Mensajes: 1.575



Ver Perfil
Re: Creando nuevas keywords para C
« Respuesta #2 en: 30 Julio 2019, 19:32 pm »

Pues sí, me gusta más así, compliqué demasiado las cosas sin necesidad.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Clase de auto keywords, acentos.
PHP
LuffyFF 0 1,084 Último mensaje 20 Julio 2011, 21:03 pm
por LuffyFF
Creando un bot para adfly
.NET (C#, VB.NET, ASP)
Kaxperday 9 15,121 Último mensaje 8 Junio 2016, 17:36 pm
por engel lex
Creando una PC solo para programar
Desarrollo Web
Ali Baba 1 1,320 Último mensaje 1 Noviembre 2016, 22:03 pm
por theusuario5000
Creando sitio web para clientes
Foro Libre
Ali Baba 4 1,487 Último mensaje 11 Febrero 2017, 11:21 am
por Orubatosu
Baneo reiterado en un foro aun creando nuevas cuentas « 1 2 »
Dudas Generales
lammer81 15 2,414 Último mensaje 19 Junio 2022, 17:49 pm
por Danielㅤ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines