Pregunta

He hecho recientemente un clon de CP (por la Universidad) y me pasó a descubrir algo que nunca había tenido la oportunidad de.

Esto se aplica al menos a GCC compilar una fuente C.

Hice el desarrollo principal de este programa específico C en un Mac OS X (10.6.4), obra con la de Apple /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.

Sin embargo, me encontré con las pruebas en una máquina virtual de Linux del arco dentro de la Mac, con la última gcc (sin adiciones, sin personalizaciones, no hay mods como Apple)

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

Y tuvimos que construirlo en la clase en el Ubuntu 10.04.1 LTS que tenemos allí.

Mi Makefile era algo como:

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

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

Por lo tanto, yo siempre estaba corriendo (en todos los sistemas operativos) gcc con -Wall habilitado. Mac y Arco no mostraron ninguna advertencia.

Ubuntu impreso dos advertencias, con y sin -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

versión de GCC de Ubuntu es el valor predeterminado para la distribución: gcc (Ubuntu 4.4.3-ubuntu5) 4.4.3

¿Por qué ocurre esto?

¿Por qué no aparece ninguna advertencia en los otros dos sistemas operativos y en Ubuntu hacer?

¿Fue útil?

Solución

Ubuntu hace cumplir algunas CFLAGS como se puede ver aquí

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top