JFC,
I used TCC all the time to test little code snippets. I write test
cases as shell scripts in C, and use TCC's compile-on-the-fly feature.
I've not run into problems with it really, even when doing some pretty
weird bit-level hackery.
On Tue, Sep 30, 2014 at 2:18 PM, JFC Morfin <[email protected]> wrote:
The question is not about bugs. These are ten years old libraries
used millions of time but compiled under Borland. There are
differences between compilers. The question is only to understand
them.
Borland isn't known for its standards compliance. My guess is that
Borland wasn't handling the escape sequences properly and ignoring
unknown ones or something. The standard specifically states that its
supposed to throw up a warning if it finds an unknown escape. Now you
have TCC and GCC and they are doing it right, and your having problems.
BTW, according to the standard, ? should be escaped as well. So \*?
becomes "\\*\?"
And off-topic, but you mentioned your code handled regex's. Google has
a lightning fast regex implementation. Its missing back references or
something, but the speed is pretty amazing. I forget the name of the
lib, but you can Google it. Maybe I'll see if it compiles under TCC :)
Thx.
1. What I suspect is that TCC only reports a kind of compilation
error at a time not all of them.
For example when I tried to address the "\" issue, it did not report
on "isascii".
Is there a way to tell TCC to continue trying to compile even after
"blocking" errors. This was by default in BCC and several others.
There shouldn't have been any problem with isascii(). Works fine for
me.
2. Sometimes you can have the kind of report above not displayed on
the screen but directly sent in a file (because it may be rather
long). Just asking.
This is Unix. We have tools for handling output like that and for
processing it. Windows doesn't.
Uhmm ... and what escape is \. supposed to be? You are confusing C
escapes with regular expressions I think.
This depends on compilers. In other compiler or environnement you
must escape more things. In BCC these escapes are required
Uhmm ... you seem awfully sure of that. But there is such a thing as
standards and following them will help. Again, TCC isn't doing
anything wrong. You can find a list of the standard C escapes
anywhere. Wikipedia and my outdated ANSI C list show the same list and
I know wikipedia is pretty current, so the standard hasn't likely
changed much.
Sure. And isascii is documented there.
Tried a minimal test case?
Test your code with gcc please. If it compiles under gcc and then
fails under tcc, then this is the proper list. If it won't compile
under gcc, then perhaps stackoverflow would be a better place for
help.
My choice of TCC is to avoid GCC :-) There are declaration
discrepancies and they have used some function names I also used. If
I could stay with tcc it would be simpler.
Perhaps you missed my point. You can try the LLVM compiler to
determine if your problems are your own or tcc's. Your issues are all
that your code is radically non-standard. Yes, tcc has a number of
short-comings, but it handles simple string escapes and generic
functions like isascii() just fine. Perhaps Borland doesn't.
Also, if you are attempting to make tcc your main compiler, then
realize that tcc doesn't optimize nearly as well as GCC or LLVM. But
... if you are going to embed a C compiler into another program to
"script" it in C, or want to write shell scripts in C with
#!/usr/bin/tcc -run then tcc is really awesome. If avoiding gcc is
your only reason for using tcc, you may be disappointed.
_______________________________________________
Tinycc-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/tinycc-devel