On Thu, Dec 29, 2011 at 1:50 PM, David Brown <david.br...@hesbynett.no> wrote:
> On 29/12/11 22:05, R A wrote:
>>
>>
>>> The gcc developers, and everyone else involved in the development
>>> of C as a language, are perhaps not superhuman - but I suspect
>>> their combined knowledge, experience and programming ability
>>> outweighs yours.
>>
>>
>> given. but do you have a consensus of the community that this feature
>> is not worth including? i haven't even heard but from a few people
>> saying that "it's not worth it because if it was, 'we're the ones to
>> have thought about it'".
>>
>> computing science (may i call it a science??), is all about
>> objectivity and examining the theories and evidence. it should be
>> prepared re-examine everything when a new idea is introduced or
>> challenged.
>>
>> so if it's a bad idea, explain to me exactly why; not go about human
>> politics.
>>
>
> I don't speak for the gcc community - either for the users or the
> developers.  But occasionally I can help out on this mailing list, and let
> the real developers get on with their work.
>
> There are a number of reasons why you wouldn't want an evaluation system as
> part of the C preprocessor (disregarding any thoughts about it being hard to
> do, impossible to standardise, and redundant given all the other ways to
> achieve the same ends).

The C preprocessor already includes evaluation of expressions, for
conditional inclusion...

> There is no standard environment for C.  Should calculations be done as
> 32-bit integer?  What about targets that use 16-bit integers (or even 64-bit
> integers)?

They can use the same rules they use today, no?  This is already standardized.

> You want to call the function "eval" - what about existing code
> that uses the word "eval", either as a pre-processor macro or as part of the
> C code?  You want to allow recursive macros - that opens a wide range of
> problems for getting consistency and clear definitions (and typically
> requires being able to define macros in at least two different ways - one
> recursive, one literal).  You want to allow the evaluation of symbols and
> expressions by the preprocessor - that means it has to understand the syntax
> and semantics of these expressions, rather than just doing simple text
> manipulation.

The C preprocessor mostly manipulates tokens, not plain text.

> And it leads to more questions when macros and expressions
> are mixed - when do you do "evaluation", and when do you do simple text
> expansion?  How do you write macros that have the "eval" function in them?

I certainly see problems with the "eval" proposal, both technical and otherwise.

Technically, we could deal with it in much the same way as the
"defined" preprocessing operator.

Non-technically, the preprocessor is "the wrong place" for this functionality.

> I don't expect or want any answers here - I don't think anybody is looking
> for a discussion aiming to implement the eval idea.  I just want to point
> out that there are many, many questions involved here before anyone could
> even think about implementing it.  And I don't think they could be resolved
> in a way that is consistent, practical, and adds anything to C or the C
> pre-processor that is not better handled by an external code generator or an
> independent macro language.  No one wants to re-invent the wheel.

I'd tend to agree; we ought to move functionality _out_ of the
preprocessor, not into it.

-- James

Reply via email to