Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > declaring variables inside for loops

Reply
Thread Tools

declaring variables inside for loops

 
 
Grey Plastic
Guest
Posts: n/a
 
      08-09-2004
I'm looking for a way to declare variables inside for statements (or
perhaps some other statement) and have the following statement execute
exactly once. For example,

for(Type var=blah; 1; )

would be what I wanted, if it ran only once, instead of forever.
Similarly,

if(Type var=blah)

would be what I wanted if the statement following it ran even when
blah evaluated as false.

What I'm attempting to do is write my own for-loop style interface
using defines. For example, I want to write something like

#define CUSTOM_FOR_BEGIN(x,y,var) \
for(int x=0; x<256; x++) \
for(int y=0; y<256; y++) { \
Type var = blah;

#define CUSTOM_FOR_END() }

But I want to omit the CUSTOM_FOR_END part. I want something like

#define CUSTOM_FOR(x,y,var) \
for(int x=0; x<256; x++) \
for(int y=0; y<256; y++) \
for(Type var = blah; runOnce; )

so that I can have code like

CUSTOM_FOR(i,j,whee)
foo(whee,j);

and

CUSTOM_FOO(i,j,whee) {
foo(whee,j);
bar(j,i);
}

I'm using GNU C++, and am totally cool with using GNU extensions.
 
Reply With Quote
 
 
 
 
David Fisher
Guest
Posts: n/a
 
      08-09-2004
"Grey Plastic" <(E-Mail Removed)>
> I'm looking for a way to declare variables inside for statements (or
> perhaps some other statement) and have the following statement execute
> exactly once. For example,
>
> for(Type var=blah; 1; )
>
> would be what I wanted, if it ran only once, instead of forever.


[snip]

> I want something like
>
> #define CUSTOM_FOR(x,y,var) \
> for(int x=0; x<256; x++) \
> for(int y=0; y<256; y++) \
> for(Type var = blah; runOnce; )
>
> so that I can have code like
>
> CUSTOM_FOR(i,j,whee)
> foo(whee,j);


What you really need is a functor - have a look at
http://www.codeproject.com/cpp/TTLFunction.asp ...

But if you really want to call a macro with some arbitrary code as an
argument, just put it in brackets (braces ?). All the preprocessor cares
about is that there is a closing bracket, not what is inside ... Someone
here wrote some code like this (please excuse C-style output in a C++ news
group) -

#define DEBUG_PRINTF(x) printf x
DEBUG_PRINTF(("%d %d\n", x, y));

which expands to printf("%d %d\n", x, y);

David Fisher
Sydney, Australia


 
Reply With Quote
 
 
 
 
Victor Bazarov
Guest
Posts: n/a
 
      08-10-2004
"Grey Plastic" <(E-Mail Removed)> wrote...
> I'm looking for a way to declare variables inside for statements (or
> perhaps some other statement) and have the following statement execute
> exactly once. For example,
>
> for(Type var=blah; 1; )
>
> would be what I wanted, if it ran only once, instead of forever.


So, couldn't you just say

{
Type var=blah;

> Similarly,
>
> if(Type var=blah)
>
> would be what I wanted if the statement following it ran even when
> blah evaluated as false.


But that doesn't work, does it?

>
> What I'm attempting to do is write my own for-loop style interface
> using defines. For example, I want to write something like
>
> #define CUSTOM_FOR_BEGIN(x,y,var) \
> for(int x=0; x<256; x++) \
> for(int y=0; y<256; y++) { \
> Type var = blah;
>
> #define CUSTOM_FOR_END() }


The parentheses are really unnecessary here.

>
> But I want to omit the CUSTOM_FOR_END part. I want something like
>
> #define CUSTOM_FOR(x,y,var) \
> for(int x=0; x<256; x++) \
> for(int y=0; y<256; y++) \
> for(Type var = blah; runOnce; )
>
> so that I can have code like
>
> CUSTOM_FOR(i,j,whee)
> foo(whee,j);
>
> and
>
> CUSTOM_FOO(i,j,whee) {
> foo(whee,j);
> bar(j,i);
> }


You could extend your own CUSTOM_FOR to be

#define CUSTOM_FOR(x,y,var) \
for (int x=0;x<256;++x) \
for (int y=0, runOnce = 1 ;y<256;++y) \
for (Type var=blah; runOnce; --runOnce)

>
> I'm using GNU C++, and am totally cool with using GNU extensions.


If you need extensions, you should ask in a gnu newsgroup.


 
Reply With Quote
 
Marco Manfredini
Guest
Posts: n/a
 
      08-10-2004
Grey Plastic wrote:

> I'm looking for a way to declare variables inside for statements (or
> perhaps some other statement) and have the following statement execute
> exactly once.



#define LET(DECL) if (int __once=1) for (DECL;__once;__once--)
LET(int i=0) { ... }

Marco

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Declaring public variables inside a function Sister Ray Javascript 4 09-23-2008 08:33 AM
Good practice question: Declaring/Initializing variables inside or outside a loop ? SM Javascript 8 05-01-2007 04:38 AM
declaring variables inside while loop illegal? Roy Smith C++ 5 05-11-2006 02:51 PM
Declaring local variables inside loop Hendrik Maryns Java 37 02-25-2006 09:48 PM
Loops with loops using html-template Me Perl Misc 2 01-12-2006 05:07 PM



Advertisments