www.digitalmars.com         C & C++   DMDScript  

c++ - end problem

reply "Rajiv Bhagwat" <dataflow vsnl.com> writes:
This is really a 'c' problem, but since there is no 'c' newsgroup, it is
here.

This code segment has 2 problems:
1. 'any_bullshit' does not cause a syntax error. (Both for 'c' and 'cpp').
2. If this is saved as 'test.c', optlink gives an error about 'end'. If -mn
is specified, optlink crashes. If the file is saved as 'test.cpp', it
encounters no errors and even runs.
----------
#include <stdio.h>

void end(void *data, const char *el) {
    }

int main( any_bullshit ) {
    printf("Hello from Test1\r\n");
    return 0;
    }
------------
Seems like 'end' is special for DMC 'c'. The code piece is minimal runnable
segment from an Expat sample, which uses 'end' as the handler for tag ends
in a 'c' program, so other C compilers don't seem to have 'end' as a
reserved routine. In any case, Optlink should not crash.
Aug 23 2001
parent reply "Walter" <walter digitalmars.com> writes:
You're right, it conflicts with a name in the runtime library, and the
conflict also causes optlink to crash. -Walter

Rajiv Bhagwat wrote in message <9m30qt$2b7s$1 digitaldaemon.com>...
This is really a 'c' problem, but since there is no 'c' newsgroup, it is
here.

This code segment has 2 problems:
1. 'any_bullshit' does not cause a syntax error. (Both for 'c' and 'cpp').
2. If this is saved as 'test.c', optlink gives an error about 'end'. If -mn
is specified, optlink crashes. If the file is saved as 'test.cpp', it
encounters no errors and even runs.
----------
#include <stdio.h>

void end(void *data, const char *el) {
    }

int main( any_bullshit ) {
    printf("Hello from Test1\r\n");
    return 0;
    }
------------
Seems like 'end' is special for DMC 'c'. The code piece is minimal runnable
segment from an Expat sample, which uses 'end' as the handler for tag ends
in a 'c' program, so other C compilers don't seem to have 'end' as a
reserved routine. In any case, Optlink should not crash.
Aug 23 2001
parent reply "Rajiv Bhagwat" <dataflow vsnl.com> writes:
What about main() not complaining about arbitrary symbol? Not a show
stopper, but the compiler should catch that error as well.
-- Rajiv

Walter <walter digitalmars.com> wrote in message
news:9m4k36$aaq$1 digitaldaemon.com...
 You're right, it conflicts with a name in the runtime library, and the
 conflict also causes optlink to crash. -Walter

 Rajiv Bhagwat wrote in message <9m30qt$2b7s$1 digitaldaemon.com>...
This is really a 'c' problem, but since there is no 'c' newsgroup, it is
here.

This code segment has 2 problems:
1. 'any_bullshit' does not cause a syntax error. (Both for 'c' and
'cpp').
2. If this is saved as 'test.c', optlink gives an error about 'end'.
If -mn
is specified, optlink crashes. If the file is saved as 'test.cpp', it
encounters no errors and even runs.
----------
#include <stdio.h>

void end(void *data, const char *el) {
    }

int main( any_bullshit ) {
    printf("Hello from Test1\r\n");
    return 0;
    }
------------
Seems like 'end' is special for DMC 'c'. The code piece is minimal
runnable
segment from an Expat sample, which uses 'end' as the handler for tag
ends
in a 'c' program, so other C compilers don't seem to have 'end' as a
reserved routine. In any case, Optlink should not crash.
Aug 24 2001
parent "Walter" <walter digitalmars.com> writes:
That gets declared as an int. Isn't C lovely? <g>

Rajiv Bhagwat wrote in message <9m5gev$1q5i$1 digitaldaemon.com>...
What about main() not complaining about arbitrary symbol? Not a show
stopper, but the compiler should catch that error as well.
-- Rajiv

Walter <walter digitalmars.com> wrote in message
news:9m4k36$aaq$1 digitaldaemon.com...
 You're right, it conflicts with a name in the runtime library, and the
 conflict also causes optlink to crash. -Walter

 Rajiv Bhagwat wrote in message <9m30qt$2b7s$1 digitaldaemon.com>...
This is really a 'c' problem, but since there is no 'c' newsgroup, it is
here.

This code segment has 2 problems:
1. 'any_bullshit' does not cause a syntax error. (Both for 'c' and
'cpp').
2. If this is saved as 'test.c', optlink gives an error about 'end'.
If -mn
is specified, optlink crashes. If the file is saved as 'test.cpp', it
encounters no errors and even runs.
----------
#include <stdio.h>

void end(void *data, const char *el) {
    }

int main( any_bullshit ) {
    printf("Hello from Test1\r\n");
    return 0;
    }
------------
Seems like 'end' is special for DMC 'c'. The code piece is minimal
runnable
segment from an Expat sample, which uses 'end' as the handler for tag
ends
in a 'c' program, so other C compilers don't seem to have 'end' as a
reserved routine. In any case, Optlink should not crash.
Aug 24 2001