Berkeley CSUA MOTD:Entry 20797
Berkeley CSUA MOTD
 
WIKI | FAQ | Tech FAQ
http://csua.com/feed/
2025/05/25 [General] UID:1000 Activity:popular
5/25    

2001/3/15-16 [Computer/SW/Compilers] UID:20797 Activity:nil
3/14    Which of the following is better?
                #define intptr  (int*)
                typedef int * intptr;
        I think the latter is better, but why?
        \_ first, does #define intptr (int*) do what you want?  afaik,
           (int*) x is not a legal declaration.  if you get rid of the
           parentheses, consider the difference in the following if you use
           typedef or #define :
                intptr x, y;
           \_ Correct answer moved to the top.
        \_ The latter is better because the preprocessor will sometimes
        \_ what's wrong with just using int* ?
           \_ because it's not hungarian.
        \_ because CIVILIZED people don't succumb to those primal pointer
           urges, you sick monkey
        \_ Use void *, it is used but never used up.
        \_ first, does #define intptr (int*) do what you want?  afaik,
           (int*) x is not a legal declaration.  if you get rid of the
           parentheses, consider the difference in the following if you use
           typedef or #define :
                intptr x, y;
           substitute (int*) for intptr in bad places.  For example if you
           hook up two components that both define intptr with #define
           the preprocessor will silently choose one, whereas the compiler
           will complain about conflicting typedefs.
           \_ if you #define something twice, the preprocessor often will
              give you a warning.
        \_ #define's okay for smaller project. However, imagine you have
           constants (#define CONST1 12345) compiled into your objects and
           later on you change the semantics of your code. The compiler is
           certainly not going to catch your mistakes. Preprocessing sucks,
           save it for porting issues.
           \_ preprocessing when used properly can be quite useful.  Macros can
              sometimes do things that inline functions cannot.
        \_ The typedef is prefarable for the following reasons:
           (1) This is EXACTLY what typedef is defined to do.  Using
               #define is being unconventional.  Since there is no
               good reason to buck the convention you might as well
               follow it to make everyone's life easier.
               For example, somebody reading your code who sees intptr will
               probably assume it is a typedef (since that is the convention)
               and do things that might break if it was a #define.
           (2) Debuggers can figure out what intptr means if it is a typedef
               but not if it is a define.  For example, "p (intptr) x"
               should work properly in gdb with typedef not with #define.
           (3) Typedef is more likely to work properly in cases you haven't
               considered since the compiler has more information about
               what it's doing.  Consequently, it is more likely that
               compilers will generate proper warnings and error messages
               using typedef than with define.  Similiarly chaining typedefs
               will work, can you guarantee the same with defines?
2025/05/25 [General] UID:1000 Activity:popular
5/25    

You may also be interested in these entries...
2014/1/14-2/5 [Computer/SW/Languages/C_Cplusplus] UID:54763 Activity:nil
1/14    Why is NULL defined to be "0" in C++ instead of "((void *) 0)" like in
        C?  I have some overloaded functtions where one takes an integer
        parameter and the other a pointer parameter.  When I call it with
        "NULL", the compiler matches it with the integer version instead of
        the pointer version which is a problem.  Other funny effect is that
        sizeof(NULL) is different from sizeof(myPtr).  Thanks.
	...
2013/4/29-5/18 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:54665 Activity:nil
4/29    Why were C and Java designed to require "break;" statements for a
        "case" section to terminate rather than falling-through to the next
        section?  99% of the time poeple want a "case" section to terminate.
        In fact some compilers issue warning if there is no "break;" statement
        in a "case" section.  Why not just design the languages to have
        termination as the default behavior, and provide a "fallthru;"
	...
2012/12/18-2013/1/24 [Computer/SW/Languages/Perl] UID:54561 Activity:nil
12/18   Happy 25th birthday Perl, and FUCK YOU Larry Wall for fucking up
        the computer science formalism that sets back compilers development
        back for at least a decade:
        http://techcrunch.com/2012/12/18/print-happy-25th-birthday-perl
        \_ I tried to learn Perl but was scared away by it.  Maybe scripting
           lanauages have to be like that in order to work well?
	...
2011/3/7-4/20 [Computer/SW/Languages/C_Cplusplus] UID:54056 Activity:nil
3/7     I have a C question.  I have the following source code in two identical
        files t.c and t.cpp:
                #include <stdlib.h>
                int main(int argc, char *argv[]) {
                  const char * const * p1;
                  const char * * p2;
	...
2010/1/22-30 [Computer/HW/Laptop, Computer/SW/OS/OsX] UID:53655 Activity:high
1/22    looking to buy a new development laptop
        needs ssdrive, >6 hr possible batt life, and runs linux reasonably
        Anyone have a recommendation? Thx.
        \_ thinkpad t23 w ssdrive and battery inplace of drive bay
        \_ Ever wondered what RICHARD STALLMAN uses for a laptop?  Well,
           wonder no more!
	...
2010/1/12-29 [Computer/SW/Apps/Media] UID:53627 Activity:kinda low
1/12    How do I get a job NOT related to internet DNS social network cloud
        twitter GOOG EC2 amazon API ???
        \_ A CS job not related to API?
        \_ Chip design, or maybe software that does chip design. What is
           your major? How about game developer?
        \_ DNS? DNS? What era ado you live in? I agree that social network
	...
2009/8/31-9/9 [Computer/SW/Compilers] UID:53312 Activity:nil
8/31    I'm trying to learn ActionScript, like a step by step tutorial.
        The site at http://www.actionscript.org/resources/categories/Tutorials/Flash/Beginner
        isn't well organized. It doesn't explain how to get started with
        an editor, compiler, IDE. And should I even learn AS2 when you can
        learn AS3? Is Adobe Flash CS4 >>> CS3 or just CS4 > CS3?
	...
2009/5/6-14 [Computer/SW/Languages/Perl, Computer/SW/Languages/Web] UID:52961 Activity:kinda low
5/6     I'm sure you've seen web sites that distribute software by making
        a user fill out a form and then e-mailing the user a randomly
        generate link to the software that works just once. What software
        is used to do this? I'd like to distribute software in such a way.
        \_ "Software"?  What web server/web application environment
           are you using?
	...
2009/2/28-3/11 [Computer/SW/Compilers] UID:52661 Activity:nil
2/28    I'm looking for a recommendation of a compiler/IDE to use to
        develop C/C++ code under Linux. In school, we used jove/gcc and
        I still use emacs/vi and gcc to this day. However, it is really
        lacking. Under Windows I tried Visual Studio and there were some
        really nice things about it, although it was so overwhelming that
        after 6 months of occasional use I still didn't really know what I
	...
2009/1/13-22 [Computer/Theory] UID:52367 Activity:kinda low
1/13    I am writing a commandline parser for a class and I could use some
        tips for algorithms to use. (The project is over and done so I am
        not cheating, but I am dissatisfied with my end result.) I STFW and
        didn't come up with too much I liked. I read the source for some
        shells like tcsh and that is *WAY* too complicated and relies on
        a lot of other code. I know that browsers and other apps have
	...
2008/6/9-12 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Security] UID:50194 Activity:nil
6/8     CSUA code guru please help. I need to see my random number
        generator with a good seed (I just need random 18 bit
        identifiers). The usual time(NULL) is OK, except my program
        might be invoked faster than once a second, and seeding using
        time() produced the same result. I tried clock() but it seems
        to return 0. My program needs to be run in Linux/DOS (Watcom
	...