Noticias sobre Linux

encontrados: 76, tiempo total: 0.005 segundos rss2
#55 No es solo Rust, tambien Zig ( y de forma, quiza, mas elegante ), eso son encapsuladores ( mas o menos intrinsecos del lenguaje ) donde hay un enumerativo o booleano adherido al resultado del typo que sea. Enums, Options, Errors,... puedes trabajar incluso en C con construcciones similares. Basicamente donde tienes un:

TypoDeValorADevolver NombreDeFuncion( parametros... )
{
...
}

Pasas a

#define ERRORADDED(type) typedef ERRORADDED_##type { BOOLEAN Error; type Result; }
#define ONERROR(x) if (((ERRORADDED_##type )(x)).Error)

ERRORADDED(TypoDeValorADevolver);

ERRORADDED_TypoDeValorADevolver NombreDeFuncion( parametros... )
{
...
}

ONERROR(NombreDeFuncion( parametros... ))
{
}

O bueno, muchas cosas del estilo... lo bueno de Rust, Zig y demas es que esto esta naturalizado en el lenguaje, pero ser no es gran cosa...
#23
#define define "patatas";
#23 #define define define
#define sensacionalista
#define if(x) if ((x) && (rand() < RAND_MAX * 0.99))

Esa linea es mano de santo. Metiendola en tu codigo programas que alucinas!.
Hace décadas que no programo en C++, y en Mac sólo lo he hecho en Modula2 en la uni, pero no entiendo porqué los #define no están en los hpp
#62 La idea no es la de ir a joder. C/C++ como cualquier lenguaje permite hacer bucles infinitos, pero hacerlos cuando no toca es problema del programador y no del lenguaje. Los define normalmente se usan para cosas como "#define PI 3.1416f" y así puedes usar el valor de PI habiendolo definido una única vez (sin tener que crear una variable/constante). Puedes hacer cosas como "#define for_i_10 for (int i=0;i<10;i++)" y crear bucles más rápido, aunque no se recomienda por razones obvias.
¿Por qué puedes cambiar palabras reservadas? Bueno, allá cada quién, no parece sensato pero en C no hay límites.
Lo cierto es que si usas este fichero el programa fallará en cualquier test que hagas, por muy básico que sea.
#define true ((rand()&15)!=15)
Evil...
#3 Y eso que se han olvidado de un clásico:

#define true false
Este es maravilloso:

#define M_PI 3.2f
Pero por muy grande que sea el commit cuando encuentre el archivo se lo cargan y listo.

Lo diabólico sería ir repartiendo los define por los diferentes headers del proyecto. Uno aquí otro allá...

Hace mucho que no toco C/C++, pero solo se podían poner los #define en los .h? O también se podían meter en los archivos .c/.cpp (los compilados)?

Como se pudieran meter en los cpp entonces sí xD.

Por cierto yo al menos que he trabajado para 2 bancos y ahora para una empresa del Ibex35 firmas un montón de políticas que básicamente dicen que como hagas esto vas a la cárcel xD.
#10 Esos #define afectan al código del módulo o donde afectan?

PS: No tengo ni idea de C

Cuanto daño puede hacer esa redefinición?

PS: Los #define y eso son lo que se conoce como macros en C/C++?
#8 Consiste en una "sobrescritura" de instrucciones y funciones propias de C.

Por ejemplo, esta línea convierte una instrucción if en un bucle infinito:
#define if while

Y esta convierte un valor true (un valor 1) en un valor que "casi siempre" es 1, pero a veces no:
#define true ((rand()&15)!=15)
#2
#define TRUE FALSE //Happy debugging scientists
#28

#define HOMBRE -1
#define MUJER -1
#define true ((rand()&15)!=15)

#define struct union

Ya tenéis diversión.
Lo suyo sería declarar esa variable en un #define y no meterlo como número mágico en el código. :-P
#3 Dirás "#define" xD xD xD ¿Y esos puntos y comas? :-D
#146
Son programas para distintos sistemas operativos, entre ellos GNU con Linux, Musl con Linux y uClibc con Linux.

No son programas para Linux. El ELF no define el sistema operativo para el que está diseñado un programa como tampoco lo define el valor del parámetro EL_OSABI (ELFOSABI). Lo que define es para qué núcleo de sistema operativo o sistema operativo se ha generado el binario.

Está bien que ignores todo lo que se te ha rebatido. Sigue así, llegarás lejos. ¿Te crees que los demás son tontos o qué?

Los valores hard coded no son definitorios (como tampoco lo es el GNU/Linux que aparece al ejecutar el comando uname -o). De todas maneras pongo aquí cómo está definido EI_OSABI y sus posibles valores. El valor 0x03 de EI_OSASBI se corresponde con ELFOSABI_GNU.…   » ver todo el comentario
#70 No tiene ningún sentido lo que dices. La función socket espera una serie de parámetros, y cuando metes AF_NETLINK lo que hace es que tiene una definición de que AF_NETLINK = 16. Y eso se le pasa al kernel tal cual le llega (hazme caso, que he comprobado el código)

Si en vez de meterle AF_NETLINK le metes 127 (que cabe) glibc se lo pasa igual al kernel, otra cosa es que el kernel luego te devuelva un error.

Ahora, si netlink es GNU porque porque la gente de glibc ha añadido una linea que pone
#define AF_NETLINK 16

Pues ahi ante esa lógica aplastante ya no digo nada.

> Nótese que GNU Hurd también soportará Netlink
HURD tambien soporta TCP y creo que no por ello nadie diria que TCP es GNU.
#65 Se diseñó para gestionar interfaces de redes en linux. Netlink lo implementa Alexey Kuznetsov[1] porque necesita un mecanismo para comunicarse entre el kernel y userspace y ninguna de las alternativas existentes era satisfactoria [2]. Y el mismo Alexey Kuznetsov hace iproute2[3].

Es completamente ABSURDO hablar de GNU y netlink cuando netlink es un tipo de socket, de modo que se implementa en kernelspace y lo unico que hace glibc es que cuando llamas a socket te admite en el protocolo AF_NETLINK, que al final es meter en la lista de protocolos una entrada con #define AF_NETLINK 16 (si, he ido a buscarlo)

Otra cosa es que algunos BSD hayan implementado netlink porque les convenció igual que linux probablemente acabe implementando pledge de openBSD.

1- git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/co
2- pdfs.semanticscholar.org/6efd/e161a2582ba5846e4b8fea5a53bc305a64f3.pdf
3- wiki.linuxfoundation.org/networking/iproute2
#15 "#define HAMMERTYPE 125 /* Wrong hammer type */" >> /usr/include/asm/errno.h
#21 #define False 1


....


If(variable == False)
Telacuelo() ;
#24 Los genéricos (generics o templates en inglés) son una forma de generar código en tiempo de compilación. En C se hacía (y se hace) mediante macros. Si en C se define algo como:

#define MY_MACRO(x) call_to_my_special_function(x, x+1)

todas las apariciones de MY_MACRO son resueltas por el preprocesador de C sustituyendo dicho valor por su contenido (call_to…). El problema de esto es que el compilador no tiene ni idea del símbolo MY_MACRO, ya que es resuelto por el preprocesador antes de que el compilador entre en juego. Esto conlleva ciertos problemas, como la ocultación de ciertos errores y el reporte de los mismos (se vuelve muy críptico).

Para solucionarlo se inventaron los generics, que no son más que una forma que tiene el compilador de…   » ver todo el comentario
2b || !2b
#define question
« anterior1234

menéame