¿Cómo imprimir «GeeksforGeeks» con main() vacío en C, C++ y Java?

Escriba un programa que imprima » GeeksforGeeks» con la función main() vacía. No se le permite escribir nada en main().

lenguaje C

  1. Una forma de hacer esto es aplicar el atributo constructor GCC a una función para que se ejecute antes que main() (ver esto para más detalles).

    #include <stdio.h>
      
    /* Apply the constructor attribute to myStartupFun() 
       so that it is executed before main() */
    void myStartupFun(void) __attribute__((constructor));
      
    /* implementation of myStartupFun */
    void myStartupFun(void)
    {
        printf("GeeksforGeeks");
    }
      
    int main()
    {
    }

    Producción:

    GeeksforGeeks
  2. En Linux, simplemente anule la definición predeterminada de la función _start() para que funcione como un código de inicio personalizado. Vea este artículo para entender más.

    #include <stdio.h>
    #include <stdlib.h>
      
    int main(void)
    {
    }
      
    // _start() function
    void _start(void)
    {
        printf("GeeeksforGeeks");
      
        // Call main() function
        int var = main();
        exit(var);
    }

    Ahora compile esto siguiendo el comando

    gcc -nostartfiles -o file file.c

    Producción:

    GeeksforGeeks

lenguaje C++

  1. La idea es crear una clase , tener una instrucción cout en el constructor y crear un objeto global de la clase. Cuando se crea el objeto, se llama al constructor y se imprime «GeeksforGeeks».

    #include <iostream>
      
    class MyClass {
    public:
        MyClass()
        {
            std::cout << "GeeksforGeeks";
        }
    } m;
      
    int main()
    {
    }

    Producción:

    GeeksforGeeks
  2. La idea es crear una estructura y usar la misma lógica que se discutió anteriormente. La razón es que la estructura y la clase en C++ son exactamente la misma estructura de datos, excepto que la estructura tiene visibilidad pública por defecto, mientras que la clase tiene visibilidad privada por defecto.

    #include <iostream>
      
    struct Mystruct {
      
        Mystruct()
        {
            std::cout << "GeeksforGeeks";
        }
    } obj;
      
    int main() {}

    Producción:

    GeeksforGeeks
  3. Al usar una variable global, la idea es inicializar la función printf() en una variable global, pero solo funcionará en el lenguaje C++, ya que en el lenguaje C no podemos inicializar una variable o expresión como esta en una variable global.

    #include <cstdio>
      
    int var = printf("GeeksforGeeks");
      
    int main()
    {
    }

    Producción:

    GeeksforGeeks

lenguaje Java

La idea es usar un bloque estático para imprimir, en realidad cualquier bloque estático declarado fuera del método main() en Java se ejecuta antes que el método principal.

class Myjava {
    static
    {
        System.out.println("GeeksforGeeks");
    }
    public static void main(String args[])
    {
    }
}

Producción:

GeeksforGeeks

Este artículo es una contribución de Viki y fue mejorado por Shubham Bansal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *