Pergunta

Recentemente, fiz um clone de CP (para a universidade) e descobri algo que nunca tive a chance.

Isso se aplica pelo menos ao GCC compilando uma fonte C.

Fiz o principal desenvolvimento deste programa C específico em um Mac OS X (10.6.4), construindo com a Apple's /usr/bin/gcc --version

i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)
Copyright (C) 2007 Free Software Foundation, Inc.

No entanto, executei os testes em uma máquina virtual Arch Linux no Mac, com o mais recente GCC (sem adições, sem personalizações, sem mods como a Apple's)

gcc (GCC) 4.5.1
Copyright (C) 2010 Free Software Foundation, Inc.

E tivemos que construí -lo na classe no Ubuntu 10.04.1 LTS que temos lá.

Meu makefile era algo como:

CC=gcc
#CFLAGS=-O0 -g -Wall
CFLAGS=-O3 -Wall -finline-functions
EXE=copy

compile:
    $(CC) $(CFLAGS) -o $(EXE) main.c

Então, eu estava sempre correndo (em todos os sistemas operacionais com o sistema operacional com -Wall ativado. Mac e Arch nunca mostraram nenhum aviso.

Ubuntu imprimiu dois avisos, com e sem -Wall

do_copy.c: In function 'do_copy_file2file':
do_copy.c:27: warning: ignoring return value of 'realpath', declared with attribute warn_unused_result
do_copy.c: In function 'do_copy_symlink2file':
do_copy.c:117: warning: ignoring return value of 'symlink', declared with attribute warn_unused_result

A versão GCC do Ubuntu é o padrão para a distribuição:gcc (Ubuntu 4.4.3-ubuntu5) 4.4.3

Por que isso acontece?

Por que não vejo nenhum aviso nos outros dois OSS e no Ubuntu eu?

Foi útil?

Solução

Ubuntu aplica alguns cflags como você pode ver aqui

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top