J'ai un logiciel dans lequel il y a des instructions correspondant au
préprocesseur C, cpp, comme ceci :
#ifdef SOME
// some code
#else
// another code
#endif
ainsi dans le Makefile, l'une des deux commandes suivantes est exécutée
suivant les cas :
cpp -D SOME -C $< > $@
cpp -C $< > $@
une personne m'a contacté m'expliquant qu'elle est sous Mac OS (je suis sous
Linux) et que sa version de cpp ne supporte pas ces options.
Je souhaiterais rendre le code compatible et portable sous Mac OS pour tout
le !onde puisse l'utiliser, que dois-je changer dans ce code ?
Peut-être la page de man de la version mac de cpp est-elle disponible
quelque-part ?
D'avance merci
> Peut-être la page de man de la version mac de cpp est-elle disponible
> quelque-part ?
http://www.justfuckinggoogleit.com/search.pl?query=apple+cpp+man+page
Cordialement,
d.
"""
Forbidden
Your client does not have permission to get
URL /custom?query=apple+cpp+man+page&sa=Search&client=pub-5834014132134539&forid=1&ie=UTF-8&oe=UTF-8&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%23336699%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3A336699%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BFORID%3A1%3B&hl=en
from this server. (Client IP address: 88.123.244.250)
We apologize for your inconvenience, but this request could not be
processed.
Please click here to continue your search on Google.
"""
--
Sur google j'ai trouvé deux pages de man qui semble être sur des sites
relatifs à MacOS, sauf que le problème c'est que ce sont les même pages de
man que j'ai sous Linux, avec dans l'entête l'indication "GNU" en toute
lettre, comme vous pouvez le voir :
http://developer.apple.com/DOCUMENTATION/Darwin/Reference/ManPages/man1/cpp.1.html
http://www.hmug.org/man/1/cpp.php
or sur ces pages les options -C et -D sont présentes, je ne comprends donc
pas quel est le problème de l'utilisateur qui m'écrit, des idées ?
Cornillet Pascal <p.cor...@laposte.net> writes:
> Sur google j'ai trouvé deux pages de man qui semble être sur des sites
> relatifs à MacOS, sauf que le problème c'est que ce sont les même pages de
> man que j'ai sous Linux, avec dans l'entête l'indication "GNU" en toute
> lettre, comme vous pouvez le voir :
>
> http://developer.apple.com/DOCUMENTATION/Darwin/Reference/ManPages/man1/cpp.1.html
> http://www.hmug.org/man/1/cpp.php
Apple utilise les chaines de compilation du projet GNU comme gcc, cpp,
etc. Donc il n'y a aucune raison que les options Linux ne marchent pas.
> or sur ces pages les options -C et -D sont présentes, je ne comprends donc
> pas quel est le problème de l'utilisateur qui m'écrit, des idées ?
Le plus simple serait d'avoir le message d'erreur exact venant de
l'utilisateur.
Cordialement,
d.
--
David Mentré
>> cpp -D SOME -C $< > $@
> pas quel est le problème de l'utilisateur qui m'écrit, des idées ?
cpp -DSOME -C $< > $@
ne marcherais pas mieux ?
--
real::A(100)=0;A([1,23,47])=[3,1,4]
print*,pack([(i,i=1,100)],A/=0),achar(13),ac har(10),pack(A,A/=0)
end
> --{ Cornillet Pascal a plopé ceci: }--
> >> cpp -D SOME -C $< > $@
> > pas quel est le problème de l'utilisateur qui m'écrit, des idées ?
> cpp -DSOME -C $< > $@
> ne marcherais pas mieux ?
Je confirme qu'avec ma machine sous Mac OS X, il faut coller SOME à -D.
prunille:~> ll =cpp =cpp-4.0
-r-xr-xr-x 1 root wheel 3409 2006-09-12 04:02:16 /usr/bin/cpp*
-rwxr-xr-x 1 root wheel 352256 2006-09-28 04:55:08 /usr/bin/cpp-4.0*
prunille:~> cpp-4.0 -D SOME < /dev/null
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "<stdin>"
prunille:~> cpp -D SOME < /dev/null
powerpc-apple-darwin8-gcc-4.0.1: c: No such file or directory
powerpc-apple-darwin8-gcc-4.0.1: SOME: No such file or directory
powerpc-apple-darwin8-gcc-4.0.1: no input files
zsh: exit 1 cpp -D SOME < /dev/null
prunille:~> cpp -DSOME < /dev/null
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "<stdin>"
Sous Mac OS X, cpp est un script sh, donc voici le début:
#!/bin/sh
#
# Transitional front end to CCCP to make it behave like (Reiser) CCP:
# specifies -traditional
# doesn't search gcc-include
#
# Please beware that this program exists only to provide legacy BSD
# software access to cccp. Direct access to the C pre-processor
# is deprecated; it is only supported for use by the cc(1) C
# compiler. Use of cccp for anything other than C code is a bad
# idea. Don't do it. If you want a macro processor, use m4(1).
#
# Copyright (c) 1990 The Regents of the University of California.
# All rights reserved.
#
# This code is derived from software contributed to Berkeley by
# the Systems Programming Group of the University of Utah Computer
# Science Department.
--
Vincent Lefèvre <vin...@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
> une personne m'a contacté m'expliquant qu'elle est sous Mac OS (je suis sous
> Linux) et que sa version de cpp ne supporte pas ces options.
> Je souhaiterais rendre le code compatible et portable sous Mac OS pour tout
> le !onde puisse l'utiliser, que dois-je changer dans ce code ?
> Peut-être la page de man de la version mac de cpp est-elle disponible
> quelque-part ?
Taper "man cpp" tout simplement! Si ça ne fonctionne pas, c'est que
les outils de développement (XCode) sont mal installés. Donc ne pas
s'étonner que ça ne fonctionne pas.
je ne peux pas faire ça sur la machine de la personne qui m'écrit :)
Je m'étais aussi demandé si par hasard cpp n'était pas installé sur sa
machine, mais au regard des autres réponses faites il s'agirait de coller
la définition. En tout cas sur ma machine coller fonctionne aussi.
Par contre les pages de man indiquées par Google ne font pas mention de la
possibilité de coller la définition à l'argument.
> Par contre les pages de man indiquées par Google ne font pas mention
> de la possibilité de coller la définition à l'argument.
J'ai toujours eu l'habitude de coller. Mais c'est vrai que les docs
sont ambiguës. Par exemple sous Linux, "man cpp" donne:
[...]
SYNOPSIS
cpp [-Dmacro[=defn]...] [-Umacro]
[-Idir...] [-iquotedir...]
[...]
-D name
Predefine name as a macro, with definition 1.
-D name=definition
The contents of definition are tokenized and processed
as if they appeared during translation phase three in a
#define directive. In particular, the definition will
be truncated by embedded newline characters.
[...]
Dans le synopsis, c'est collé, mais pas dans la description des options.