lulz do c
Como já não blogo há muito tempo decidi vir falar sobre algo completamente inutil. Estava eu a tentar compilar o ircd da ptlink no OpenBSD com o pcc em vez do gcc, quando me deparo com um erro meio estranho...
pcc -I../include -g -O2 -DNDEBUG -c help.c pcc -I../include -g -O2 -DNDEBUG -c hvc.c hvc.c, line 100: return value required *** Error code 1
Achei estranho este tipo de erro, ate porque isto é compilavel em outras circunstancias.
int m_hvc(aClient *cptr, aClient *sptr, int parc, char *parv[])
{
if(!IsPrivileged(sptr))
return; /* Linha 100 */
if(parc < 2)
{
if(MyClient(sptr))
Nunca tinha visto "return;" em nenhum codigo na vida, e fiquei a pensar como é que o gcc papa isto sem espinhas. Pus return 0; porque me pareceu bem e o resto do programa compilou bem, mas depois deu problemas a linkar portanto cagay naquilo. Fiz uma experiencia:
{:/home/bud/gcc:48} cat main.c
#include <stdio.h>
int sida() {
return;
}
int main() {
printf("%x--\n",sida());
return 0;
}
{:/home/bud/gcc:49} gcc -o sida main.c
{:/home/bud/gcc:50} ./sida
3bbc634d--
{:/home/bud/gcc:51} ./sida
5357df90--
{:/home/bud/gcc:52} ./sida
b3e1e9d9--
Belo random number generator :-P Com -Wall o gcc ja diz qualquer coisinha
main.c: In function `sida': main.c:4: warning: `return' with no value, in function returning non-void
Acho que supostamente isto nao devia funcionar? O dcoder teve me a dar umas dicas e disse que o msvc tambem comia os return;. Bastante inútil este post, hein?