Lines Matching +full:un +full:-
1 .. include:: ../disclaimer-sp.rst
3 :Original: :ref:`Documentation/process/coding-style.rst <submittingpatches>`
11 Este es un breve documento que describe el estilo preferido en el código
18 GNU, y NO leerlo. Quémelos, es un gran gesto simbólico.
24 -----------
32 comienza y termina un bloque de control. Especialmente, cuando ha estado
49 sangría`` (``double-indenting``) en etiquetas ``case``. Por ejemplo:
51 .. code-block:: c
73 .. code-block:: c
80 .. code-block:: c
87 .. code-block:: c
102 Consiga un editor decente y no deje espacios en blanco al final de las
106 ------------------------------------
118 se colocan sustancialmente a la derecha. Un estilo muy usado es alinear
119 descendientes a un paréntesis de función abierto.
129 ----------------------------------
138 .. code-block:: c
147 .. code-block:: c
160 Sin embargo, hay un caso especial, a saber, las funciones: tienen la llave
163 .. code-block:: c
177 declaración, es decir, un ``while`` en una sentencia do o un ``else`` en
180 .. code-block:: c
188 .. code-block:: c
202 como el suministro de nuevas líneas en su pantalla no es un recurso
208 .. code-block:: c
215 .. code-block:: none
225 .. code-block:: c
234 Además, use llaves cuando un bucle contenga más de una declaración simple:
236 .. code-block:: c
247 del uso de función versus uso de palabra clave. Utilice un espacio después
254 Así que use un espacio después de estas palabras clave::
260 .. code-block:: c
268 .. code-block:: c
273 Al declarar datos de puntero o una función que devuelve un tipo de puntero,
277 .. code-block:: c
284 Use un espacio alrededor (a cada lado de) la mayoría de los operadores
287 = + - < > * / % | & ^ <= >= == != ? :
291 & * + - ~ ! sizeof typeof alignof __attribute__ defined
296 ++ --
299 ``->``.
317 ---------------
319 C es un lenguaje espartano, y sus convenciones de nomenclatura deberían
320 seguir su ejemplo. A diferencia de los programadores de Modula-2 y Pascal,
322 EstaVariableEsUnContadorTemporal. Un programador de C lo llamaría
328 imprescindibles. Llamar a una función global ``foo`` es un delito.
331 tener un nombre descriptivo, al igual que las funciones globales. Si tiene
343 cualquier tipo de variable que se utiliza para contener un valor temporal.
347 función-crecimiento-desequilibrio-de-hormona. Vea el capítulo 6 (Funciones).
365 de usuario una ABI/API, o al actualizar la especificación del código de un
371 -----------
374 Es un **error** usar typedef para estructuras y punteros. cuando ve un
376 .. code-block:: c
384 .. code-block:: c
414 De nuevo - debe haber una **razón** para esto. si algo es
420 podría ser un ``unsigned int`` y bajo otras configuraciones podría
421 ser ``unsigned long``, entonces, sin duda, adelante y use un typedef.
423 (c) cuando lo use para crear literalmente un tipo **nuevo** para
429 Aunque sólo costaría un corto período de tiempo para los ojos y
449 NUNCA JAMÁS use un typedef a menos que pueda coincidir claramente con una
452 En general, un puntero o una estructura que tiene elementos que pueden
453 ser razonablemente accedidos directamente, **nunca** deben ser un typedef.
456 ------------
465 declaración de case, donde tiene que hacer un montón de pequeñas cosas para
466 un montón de diferentes casos, está bien tener una función más larga.
468 Sin embargo, si tiene una función compleja y sospecha que un estudiante de
477 y divida en partes más pequeñas. Un cerebro humano puede generalmente
478 realiza un seguimiento de aproximadamente 7 cosas diferentes, cualquier
486 .. code-block:: c
506 <https://lore.kernel.org/mm-commits/CAHk-=wiOCLRny5aifWNhr621kYrJwhfURsa0vFPeUEm8mF0ufg@mail.gmail.…
512 El orden preferido de elementos para un prototipo de función es:
514 - clase de almacenamiento (a continuación, ``static __always_inline``,
515 teniendo en cuenta que ``__always_inline`` es técnicamente un atributo
517 - atributos de clase de almacenamiento (aquí, ``__init`` -- es decir,
519 - tipo de retorno (aquí, ``void *``)
520 - atributos de tipo de retorno (aquí, ``__must_check``)
521 - nombre de la función (aquí, ``action``)
522 - parámetros de la función (aquí, ``(enum magic value, size_t size, u8 count, char *fmt, ...)``,
525 - atributos de parámetros de función (aquí, ``__printf(4, 5)``)
526 - atributos de comportamiento de la función (aquí, ``__malloc``)
542 -----------------------------------
553 goto. Un ejemplo de un buen nombre podría ser ``out_free_buffer:``
555 nombres GW-BASIC como ``err1:`` y ``err2:``, ya que tendría que volver a
561 - Las declaraciones incondicionales son más fáciles de entender y seguir.
562 - se reduce el anidamiento
563 - errores al no actualizar los puntos de salida individuales al hacer
565 - ahorra el trabajo del compilador de optimizar código redundante ;)
567 .. code-block:: c
576 return -ENOMEM;
591 Un tipo común de error a tener en cuenta es "un error de error" que es algo
594 .. code-block:: c
597 kfree(foo->bar);
605 .. code-block:: c
608 kfree(foo->bar);
617 --------------
620 demasiado. NUNCA trate de explicar CÓMO funciona su código en un
635 kernel-doc. Consulte los archivos en :ref:`Documentation/doc-guide/ <doc_guide>`
636 y ``scripts/kernel-doc`` para más detalles.
640 .. code-block:: c
652 largos (multi-linea) es un poco diferente.
654 .. code-block:: c
665 comas para múltiples declaraciones de datos). Esto le deja espacio para un
668 9) Has hecho un desastre
669 ---------------------------
671 Está bien, todos lo hacemos. Probablemente un antiguo usuario de Unix le
674 menos que deseables (de hecho, son peores que los aleatorios) escribiendo -
675 un número infinito de monos escribiendo en GNU emacs nunca harán un buen
682 .. code-block:: none
684 (defun c-lineup-arglist-tabs-only (ignored)
686 (let* ((anchor (c-langelem-pos c-syntactic-element))
687 (column (c-langelem-2nd-pos c-syntactic-element))
688 (offset (- (1+ column) anchor))
689 (steps (floor offset c-basic-offset)))
691 c-basic-offset)))
693 (dir-locals-set-class-variables
694 'linux-kernel
695 '((c-mode . (
696 (c-basic-offset . 8)
697 (c-label-minimum-indentation . 0)
698 (c-offsets-alist . (
699 (arglist-close . c-lineup-arglist-tabs-only)
700 (arglist-cont-nonempty .
701 (c-lineup-gcc-asm-reg c-lineup-arglist-tabs-only))
702 (arglist-intro . +)
703 (brace-list-intro . +)
704 (c . c-lineup-C-comments)
705 (case-label . 0)
706 (comment-intro . c-lineup-comment)
707 (cpp-define-intro . +)
708 (cpp-macro . -1000)
709 (cpp-macro-cont . +)
710 (defun-block-intro . +)
711 (else-clause . 0)
712 (func-decl-cont . +)
714 (inher-cont . c-lineup-multi-inher)
715 (knr-argdecl-intro . 0)
716 (label . -1000)
718 (statement-block-intro . +)
719 (statement-case-intro . +)
720 (statement-cont . +)
723 (indent-tabs-mode . t)
724 (show-trailing-whitespace . t)
727 (dir-locals-set-directory-class
728 (expand-file-name "~/src/linux-trees")
729 'linux-kernel)
732 C en archivos bajo ``~/src/linux-trees``.
734 Pero incluso si no logra que emacs realice un formateo correcto, no todo
742 lo que simplemente de a la sangría las opciones ``-kr -i8`` (significa
747 comentar reformateos, es posible que desee echar un vistazo a la página del
751 Tenga en cuenta que también puede usar la herramienta ``clang-format`` para
757 :ref:`Documentation/process/clang-format.rst <clangformat>` para más
761 ----------------------------------------
787 consulte el archivo Documentation/kbuild/kconfig-language.rst.
791 ------------------------
793 Las estructuras de datos que tienen visibilidad fuera del contexto de un
801 que múltiples usuarios tengan acceso a la estructura de datos en paralelo -
803 debajo de su control, solo porque durmieron o hicieron otra cosa por un
823 tiene un recuento de referencias, es casi seguro que tiene un error.
826 ------------------------
831 .. code-block:: c
843 Las macros con varias instrucciones deben contenerse en un bloque do-while:
845 .. code-block:: c
857 .. code-block:: c
862 return -EBUGGERED; \
869 2) macros que dependen de tener una variable local con un nombre mágico:
871 .. code-block:: c
885 .. code-block:: c
893 .. code-block:: c
902 ret es un nombre común para una variable local -es menos probable que
910 --------------------------------
918 Los mensajes del kernel no tienen que terminar con un punto.
926 no están asociados con un dispositivo particular, <linux/printk.h> define
929 Crear buenos mensajes de depuración puede ser todo un desafío; y una vez
940 -DDEBUG en el Makefile correspondiente; en otros casos, los archivos
941 usan #define DEBUG. Y cuando un mensaje de depuración debe imprimirse
946 ----------------------
951 a cerca de ellos. :ref:`Documentation/core-api/memory-allocation.rst
956 .. code-block:: c
961 la legibilidad, y presenta una oportunidad para un error cuando se cambia
963 se pasa a un asignador de memoria no.
965 Convertir el valor devuelto, que es un puntero vacío, es redundante. La
971 .. code-block:: c
977 .. code-block:: c
984 Todas estas funciones de asignación genéricas emiten un volcado de pila
986 que no sirve de nada emitir un mensaje de fallo adicional cuando se
990 ----------------------------
994 Mientras que el uso de inlines puede ser apropiado (por ejemplo, como un
999 para el pagecache. Solo piense en esto; un fallo en la memoria caché de la
1005 que se sabe que un parámetro es una constante en tiempo de compilación, y
1007 mayor parte de su función en tiempo de compilación. Para un buen ejemplo de
1014 mantenimiento de eliminar el inline, cuando un segundo usuario supera el
1019 -----------------------------------------------
1022 lo más común es un valor que indica si la función tuvo éxito o ha fallado.
1023 Dicho valor se puede representar como un número entero de código de error
1024 (-Exxx = falla, 0 = éxito) o un booleano ``con éxito`` (0 = falla, distinto
1033 Si el nombre de una función es una acción o un comando imperativo,
1034 la función debe devolver un número entero de código de error. si el nombre
1035 es un predicado, la función debe devolver un valor booleano "exitoso".
1037 Por ejemplo, ``agregar trabajo`` es un comando, y la función
1038 agregar_trabajo() devuelve 0 en caso de éxito o -EBUSY en caso de fracaso.
1039 De la misma manera, ``dispositivo PCI presente`` es un predicado, y la
1040 función pci_dev_present() devuelve 1 si tiene éxito en encontrar un
1047 Las funciones cuyo valor devuelto es el resultado real de un cálculo, en
1054 ----------------
1056 El tipo bool del kernel Linux es un alias para el tipo C99 _Bool. Los
1076 consolidarlos en un bitfield con miembros de 1 bit, o usando un tipo de
1080 muchos valores verdaderos/falsos en un solo argumento bit a bit 'flags' y
1088 ---------------------------------------
1095 .. code-block:: c
1102 .. code-block:: c
1104 #define sizeof_field(t, f) (sizeof(((t*)0)->f))
1112 ---------------------------------------
1118 .. code-block:: c
1120 -*- mode: c -*-
1124 .. code-block:: c
1128 compile-command: "gcc -DMAGIC_DEBUG_FLAG foo.c"
1134 .. code-block:: c
1146 -----------------------
1173 .. code-block:: c
1180 ---------------------------
1184 la lógica más difícil de seguir. En cambio, use dichos condicionales en un
1192 porciones de expresiones. En lugar de poner un ifdef en una expresión,
1199 envolverla en un preprocesador condicional. (Sin embargo, si una función o
1203 convertir un símbolo Kconfig en una expresión booleana de C, y utilícelo en
1204 un condicional de C normal:
1206 .. code-block:: c
1213 excluirá el bloque de código al igual que con un #ifdef, por lo que esto no
1217 etc.). Por lo tanto, aún debe usar un #ifdef si el código dentro del bloque
1221 líneas), incluya un comentario después de #endif en la misma línea,
1224 .. code-block:: c
1231 -----------------------
1270 suceda durante un funcionamiento normal. No hay "checkeos" previos o
1274 alternativa posible, si necesita notificar al usuario de un problema.
1281 opción. Esta es la razón por la que hay un artículo de "No haga WARN a la
1285 fallara si se dispara un WARN*(), y tales usuarios deben estar preparados
1286 para afrontar las consecuencias de un sistema que es algo más probable que
1296 -----------------------
1301 ISBN 0-13-110362-8 (paperback), 0-13-110370-9 (hardback).
1305 Addison-Wesley, Inc., 1999.
1306 ISBN 0-201-61586-X.
1308 manuales GCC - en cumplimiento con K&R y este texto - para cpp, gcc,
1312 programación en lenguaje C, URL: http://www.open-std.org/JTC1/SC22/WG14/
1314 :ref:`process/coding-style.rst <codingstyle>` del kernel, por greg@kroah.com at OLS 2002: