From: Ullrich von Bassewitz (uz_at_musoftware.de)
Date: 2003-09-30 22:34:52
On Tue, Sep 30, 2003 at 10:05:16PM +0200, Groepaz wrote: > can you (briefly :=P) tell what the standard says on that then? (ie, what are > the properties of escaped numerics?) i thought that escaped numeric > characters shouldnt be translated like this.... mmmmh. is this even defined > at all? or is it implementation defined? 5.2.1 Character sets 2 In a character constant or string literal, members of the execution character set shall be represented by corresponding members of the source character set or by escape sequences consisting of the backslash \ followed by one or more characters. A byte with all bits set to 0, called the null character, shall exist in the basic execution character set; it is used to terminate a character string. I would interpret this as if the current behaviour of cc65 is correct. It's also easy to remember: Any character or string constant is translated into the target character set. > however, i am > still not quite sure if this translation should take place... what about > binary data that's embedded into the c-program, translation would be fatal > here? (maybe such thing is simply considered non portable by the standard?) If you don't want the translation, don't use character constants. For binary data it is not a good idea to use character constants, why not just use numbers: printf("%3d : %3d\n",010,8); works as expected. > a) each character has exactly one corrosponding escaped numeric. since both > will be translated, a check like ('A' == '\101') must work on all targets > (ie, its portable) Not exactly. Two characters of the source character set may be translated into the same character of the execution character set. But you check will be ok. > b) the same as a), but for escaped characters ('\n' etc) The represenation of character like \n depends on the target platform, so a check like ('\n' == '\101') depends on the target platform. > c) a binary value does not need to corrospond to a character in the target > characterset. comparison and/or assignments of binary values with/to > characters/strings is dependend on the target characterset and thus not > portable. (like the tests i have pasted :=P) Yes, same as in b) Regards Uz -- Ullrich von Bassewitz uz_at_musoftware.de ---------------------------------------------------------------------- To unsubscribe from the list send mail to majordomo_at_musoftware.de with the string "unsubscribe cc65" in the body(!) of the mail.
This archive was generated by hypermail 2.1.3 : 2003-09-30 22:35:05 CEST