Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | "Bill Cunningham" <nospam@nspam.invalid> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: can linker symbols be defined in C? |
| Date | 2014-04-28 19:39 -0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <ljmos4$ci6$1@dont-email.me> (permalink) |
| References | <2231b9bc-305e-4ed5-af87-e203dd64780a@googlegroups.com> <ljmkji$298$1@speranza.aioe.org> |
"jacob navia" <jacob@spamsink.net> wrote in message
news:ljmkji$298$1@speranza.aioe.org...
> Le 28/04/2014 22:53, Ralph Doncaster a écrit :
>> I want to define linker symbols in C. I can do it using gcc inline
>> assembler:
>> #define STR1(x) #x
>> #define STR(x) STR1(x)
>> ... more macros that calculate TXDELAYCOUNT
>> asm(".global TXDELAY" );
>> asm(".equ TXDELAY, " STR(TXDELAYCOUNT) );
>>
>>
>> Is there a way to do the same thing in standard C11?
>>
> hi ralph
>
> What about
>
> char *TXDELAY = STR(TXDELAYCOUNT);
>
> if the macros expand into a character string (with quotes).
>
> If the macros expand into an integer you do
>
> int TXDELAY = STR(TXDELAYCOUNT);
>
> In general the compiler emits a .globl for each global name.
>
> THE CATCH
> ---------
>
> In C you can do this ONCE. Once you have set the value to something you
> can't change it duringthe compilation.
>
> For instance this is NOT ALLOWED:
>
> int TXDELAY = 56;
>
> ... some code ...
>
> int TXDELAY 967;
>
> This is NOT allowed in C, but allowed in the gcc assembler! BEWARE.
>
> If you only set TXDELAY ONCE you can write it in C. If you change it
> several times in the program you can't do that in C and you should stick
> to inline assembly.
>
> BUT
>
> Is it good software practice to do that?
>
> Do YOU really know what value is used for TXDELAY after 6 changes in the
> code?
>
> The usage of .equ in this form is really a hack. Try to use different
> identifier and stick to C.
>
> You CAN do the same using the preprocessor however.
>
> #define TXDELAY 25
> ... code ...
> #undef TXDELAY
>
> #define TXDELAY 250
> ... code
> #undef TXDELAY
>
> etc. But that is as a bad hack as asm(".equ ...");
>
> Note that TXDELAY goes into the executable as a global variable and the
> value stored into the variable is the LAST value used. Did you know that?
>
> Is THAT really what you want?
>
> jacob
>
> P.S. Sorry for all the guys citing the C standard. They can't do anything
> else. But not all people here are like that.
You're spamming! You're in every thread!
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
can linker symbols be defined in C? Ralph Doncaster <ralphdoncaster@gmail.com> - 2014-04-28 13:53 -0700
Re: can linker symbols be defined in C? James Kuyper <jameskuyper@verizon.net> - 2014-04-28 17:15 -0400
Re: can linker symbols be defined in C? Andrew Smallshaw <andrews@sdf.lonestar.org> - 2014-04-28 21:17 +0000
Re: can linker symbols be defined in C? Keith Thompson <kst-u@mib.org> - 2014-04-28 14:53 -0700
Re: can linker symbols be defined in C? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-04-28 23:28 +0000
Re: can linker symbols be defined in C? James Kuyper <jameskuyper@verizon.net> - 2014-04-28 18:01 -0400
Re: can linker symbols be defined in C? jacob navia <jacob@spamsink.net> - 2014-04-29 00:26 +0200
Re: can linker symbols be defined in C? "Bill Cunningham" <nospam@nspam.invalid> - 2014-04-28 19:39 -0400
Re: can linker symbols be defined in C? Ian Collins <ian-news@hotmail.com> - 2014-04-29 11:45 +1200
Re: can linker symbols be defined in C? Ralph Doncaster <ralphdoncaster@gmail.com> - 2014-04-28 20:15 -0700
Re: can linker symbols be defined in C? Kaz Kylheku <kaz@kylheku.com> - 2014-04-29 04:11 +0000
Re: can linker symbols be defined in C? Ralph Doncaster <ralphdoncaster@gmail.com> - 2014-04-29 16:29 -0700
Re: can linker symbols be defined in C? Noob <root@127.0.0.1> - 2014-04-29 08:33 +0200
Re: can linker symbols be defined in C? Siri Crews <chine.bleu@yahoo.com> - 2014-04-28 16:54 -0700
Re: can linker symbols be defined in C? Ralph Doncaster <ralphdoncaster@gmail.com> - 2014-04-28 20:01 -0700
Re: can linker symbols be defined in C? Kaz Kylheku <kaz@kylheku.com> - 2014-04-29 00:20 +0000
Re: can linker symbols be defined in C? Ralph Doncaster <ralphdoncaster@gmail.com> - 2014-04-28 19:57 -0700
csiph-web