Je tam „Hello, World“ GNU-jako ukázkový projekt pro knihovny?

hlasů
3

GNU Dobrý den, je GNU příklad projekt pro osvědčené postupy, kódování norem, internacionalizace, konfiguraci automatizace, atd

Existuje podobný projekt, který se zaměřuje knihovny? Uvědomuji si GNU Hello mohou být použity tímto způsobem, ale já bych chybět některé praktiky knihovny specifické?

Také jsem hledal dobré tutoriály na toto téma, a Postupy Library Program se jeví jako nejvhodnější venku. Máte nějaké další návrhy?

Položena 15/11/2010 v 04:41
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
1

K dispozici je projekt s názvem libabc: sdílené knihovny kostra vytvořena Lennart Poettering:

Aby to bylo snadné jsme dát dohromady kostra příklad knihovny jsme daboval libabc, jehož README soubor obsahuje všechny své body hutný formě.

http://0pointer.de/blog/projects/libabc.html

Odpovězeno 21/09/2015 v 07:35
zdroj uživatelem

hlasů
1

Níže jsou uvedeny některé pokyny, které jsem pravidelně vychovávat. Nejsem si úplně jistý, jak užitečné, že budou:

http://en.wikipedia.org/wiki/Indent_style

http://www.python.org/dev/peps/pep-0007/

Jinak, já se jen snažím, aby odpovídaly co vidím. Při pohledu na výše uvedených vodítek styl, který by měl poskytnout dobrý přehled o tom, co consistencies hledat a pokusit se zápas v kódu.

Upravit:

Měl bych upřesnit, že výše uvedená vodítka nejsou specifické pro GNU, ale možná vám pomůže najít konzistencí, jako pojmenování schémat nebo karta / distanční vodítka.

Odpovězeno 15/11/2010 v 06:39
zdroj uživatelem

hlasů
0

Přečetla jsem si v manuálu GNU a našel krátký příklad, který myslím, že by tě dostat na dobrý začátek:

Přímo z návodu k obsluze:

/* hello.c -- print a greeting message and exit.

    Copyright (C) 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
    2005, 2006, 2007 Free Software Foundation, Inc.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 3, or (at your option)
    any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software Foundation,
    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */

 #include <config.h>
 #include "system.h"

 /* String containing name the program is called with.  */
 const char *program_name;

 static const struct option longopts[] =
 {
   { "greeting", required_argument, NULL, 'g' },
   { "help", no_argument, NULL, 'h' },
   { "next-generation", no_argument, NULL, 'n' },
   { "traditional", no_argument, NULL, 't' },
   { "version", no_argument, NULL, 'v' },
   { NULL, 0, NULL, 0 }
 };

 static void print_help (void);
 static void print_version (void);

 int
 main (int argc, char *argv[])
 {
   int optc;
   int t = 0, n = 0, lose = 0;
   const char *greeting = NULL;

   program_name = argv[0];

   /* Set locale via LC_ALL.  */
   setlocale (LC_ALL, "");

 #if ENABLE_NLS
   /* Set the text message domain.  */
   bindtextdomain (PACKAGE, LOCALEDIR);
   textdomain (PACKAGE);
 #endif

   /* Even exiting has subtleties.  The /dev/full device on GNU/Linux
      can be used for testing whether writes are checked properly.  For
      instance, hello >/dev/full should exit unsuccessfully.  On exit,
      if any writes failed, change the exit status.  This is
      implemented in the Gnulib module "closeout".  */
   atexit (close_stdout);

   while ((optc = getopt_long (argc, argv, "g:hntv", longopts, NULL)) != -1)
     switch (optc)
       {
       /* One goal here is having --help and --version exit immediately,
          per GNU coding standards.  */
       case 'v':
         print_version ();
         exit (EXIT_SUCCESS);
         break;
       case 'g':
         greeting = optarg;
         break;
       case 'h':
         print_help ();
         exit (EXIT_SUCCESS);
         break;
       case 'n':
         n = 1;
         break;
       case 't':
         t = 1;
         break;
       default:
         lose = 1;
         break;
       }

   if (lose || optind < argc)
     {
       /* Print error message and exit.  */
       if (optind < argc)
         fprintf (stderr, _("%s: extra operand: %s\n"),
         program_name, argv[optind]);
       fprintf (stderr, _("Try `%s --help' for more information.\n"),
                program_name);
       exit (EXIT_FAILURE);
     }

   /* Print greeting message and exit. */
   if (t)
     printf (_("hello, world\n"));

   else if (n)
     /* TRANSLATORS: Use box drawing characters or other fancy stuff
        if your encoding (e.g., UTF-8) allows it.  If done so add the
        following note, please:

        [Note: For best viewing results use a UTF-8 locale, please.]
     */
    printf (_("\
 +---------------+\n\
 | Hello, world! |\n\
 +---------------+\n\
 "));

   else
     {
       if (!greeting)
         greeting = _("Hello, world!");
       puts (greeting);
     }

   exit (EXIT_SUCCESS);
 }


 
 /* Print help info.  This long message is split into
    several pieces to help translators be able to align different
    blocks and identify the various pieces.  */

 static void
 print_help (void)
 {
   /* TRANSLATORS: --help output 1 (synopsis)
      no-wrap */
         printf (_("\
 Usage: %s [OPTION]...\n"), program_name);

   /* TRANSLATORS: --help output 2 (brief description)
      no-wrap */
   fputs (_("\
 Print a friendly, customizable greeting.\n"), stdout);

   puts ("");
   /* TRANSLATORS: --help output 3: options 1/2
      no-wrap */
   fputs (_("\
   -h, --help          display this help and exit\n\
   -v, --version       display version information and exit\n"), stdout);

   puts ("");
   /* TRANSLATORS: --help output 4: options 2/2
      no-wrap */
   fputs (_("\
   -t, --traditional       use traditional greeting format\n\
   -n, --next-generation   use next-generation greeting format\n\
   -g, --greeting=TEXT     use TEXT as the greeting message\n"), stdout);

   printf ("\n");
   /* TRANSLATORS: --help output 5 (end)
      TRANSLATORS: the placeholder indicates the bug-reporting address
      for this application.  Please add _another line_ with the
      address for translation bugs.
      no-wrap */
   printf (_("\
 Report bugs to <%s>.\n"), PACKAGE_BUGREPORT);
 }


 
 /* Print version and copyright information.  */

 static void
 print_version (void)
 {
   printf ("hello (GNU %s) %s\n", PACKAGE, VERSION);
   /* xgettext: no-wrap */
   puts ("");

   /* It is important to separate the year from the rest of the message,
      as done here, to avoid having to retranslate the message when a new
      year comes around.  */
   printf (_("\
 Copyright (C) %s Free Software Foundation, Inc.\n\
 License GPLv3+: GNU GPL version 3 or later\
 <http://gnu.org/licenses/gpl.html>\n\
 This is free software: you are free to change and redistribute it.\n\
 There is NO WARRANTY, to the extent permitted by law.\n"),
               "2007");
 }
Odpovězeno 21/09/2015 v 04:56
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more