Results 1 to 4 of 4

Thread: ICE preprocessor

  1. #1
    yonik is offline Registered User
    Join Date
    Sep 2003
    Location
    NJ
    Posts
    9

    ICE preprocessor

    """
    The only purpose for which #ifndef, #define, and #endif directives can be used is to create a double-include block.
    """

    This seems rather odd... if that is truly the only purpose, can't that be a rule the compiler must implement - no files will be processed more than once?

    Is your statement also meant to preclude the inclusion/exclusion of code by setting a macro outside the file like so:

    compiler -DDEBUG source_file.ice

    ------------------ source_file.ice ----------------

    interface myInterface {
    void foo();
    #ifdef DEBUG
    void printInternalState();
    #endif
    };

    Oh, and for goodness sakes, can't we make the semicolon at the end of a type definition optional (or kill it altogether)? Forgetting it will be a very common mistake.
    It was easy enough to remember when all you programed in was C++, but now with Java, C#, etc, it becomes half impossible to remember it!

    -Yonik

  2. #2
    marc's Avatar
    marc is offline ZeroC Staff
    Name: Marc Laukien
    Organization: ZeroC, Inc.
    Project: The Internet Communications Engine
    Join Date
    Feb 2003
    Location
    Florida
    Posts
    1,860
    The reason why we limited the use of the C preprocessor is to make it possible to replace it someday with something else, such as "import" statements.

    However, it seems more and more unlikely that we will ever do this. So far the C preprocessor worked rather well, so there is no real reason to remove it. Without the C preprocessor it would also be difficult to automatically generate dependencies of Slice files.

  3. #3
    yonik is offline Registered User
    Join Date
    Sep 2003
    Location
    NJ
    Posts
    9
    My question was more about why can't the slice compiler prevent multiple inclusion on it's own. It's certainly cleaner.

    It looks more like you included #define directives simply to prevent multiple inclusion. And you need to prevent multiple inclusion that way because you are using the C preprocessor in your implementation. That's not a great reason IMHO.

  4. #4
    michi's Avatar
    michi is offline Registered User
    Name: Michi Henning
    Organization: Triodia Technologies
    Project: I have a passing interest in Ice :-)
    Join Date
    Feb 2003
    Location
    Brisbane, Australia
    Posts
    1,055
    Originally posted by yonik
    My question was more about why can't the slice compiler prevent multiple inclusion on it's own. It's certainly cleaner.

    It looks more like you included #define directives simply to prevent multiple inclusion. And you need to prevent multiple inclusion that way because you are using the C preprocessor in your implementation. That's not a great reason IMHO.
    Hmmm... Yes, I get your drift. Basically, we used the preprocessor as a matter of convenience more than anything else. And, given that the preprocessor is used, we of course ended up using the standard mechanism to prevent double inclusion.

    I think it might be possible to modify the Slice parser to automatically skip over files that are included more than once. I'll have a look at this when I get back to Australia in early October.

    Cheers,

    Michi.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 0
    Last Post: 04-17-2008, 09:12 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •