Codul vostru trebuie nu numai să “meargă”, ci și să fie ușor de citit/parcurs și fără potențiale erori (neverificate de sistemul de evaluare automată). Aveți mai jos câteva indicații pentru teme, împreună cu depunctările aferente pentru nerespectarea lor.
#include “file.c”
); se includ doar fișiere header (exemplu: #include “file.h”
);#ifdef linux
…) acolo unde ar fi fost mai modular să se folosească fișiere separate și includere condiționată în fișiere header;-Wall
pe Linux și flag-ul /W3
, cel puțin, pe Windows;/D_CRT_SECURE_NO_DEPRECATE
pentru a evita unele warninguri pe Windows.do_stuff
, my_var
) ;exec
);//
in loc de /* */
)Explicație pentru structura creată (sau soluția de ansamblu aleasă):
Obligatoriu:
Opțional:
Link către repo-ul de git folosit pentru localizarea surselor
char cmd[256]
/* Undeva într-un fișier .h */ #define MAX_CMD_BUF_SIZE 256 (...) /* Undeva în sursele .c unde avem nevoie de buffer */ char cmd[MAX_CMD_BUF_SIZE];
malloc/calloc
) neeliberată folosind free
- se poate verifica utilizând valgrind
open
care nu mai sunt închise folosind close
- se poate folosi opțiunea –track-fds
a valgrind
fork
după care nu se face wait/waitpid
- rezultă în apariția unor procese zombielist.h
list.c
hashtable.h
hashtable.c
util.h
și util.c
list.c
) se declară folosind calificatorul static
.
.c
chiar dacă merge. Face imposibil de urmărit codul și pentru voi dar și pentru
asistenți sau pentru cei care peste 5 ani vor citi codul vostru. Țineți minte următorul motto:
Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live.