|
11/23 |
2005/2/15-16 [Computer/SW/Languages/C_Cplusplus] UID:36176 Activity:kinda low |
2/15 Is there some library available to make Unix network programming in C easier? I just need to do some very simplistic socket communication, but the APIs described in Steven's Unix Network Programming books are a real pain. \_ C or C++? wxWindows has a socket library. \_ C, wxWindows? \_ Which is why I asked if it really was C. \_ There is no such thing as simplistic socket communication. \_ use IO::Socket; $s = new IO::Socket::INET "host:port"; How much simpler do you want? \_ sdl_net at http://www.libsdl.com is an example of a very simplfied network library; it is written in C. There are plenty of others out there but that is the first one that comes to mind. |
2005/2/15-16 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:36174 Activity:moderate |
2/15 Technical question: we have a memory leak in our C code, we think, but it's not the sort of memory leak where the memory's unreferenced. What we'd like to do is sort of a poor-man's profile, we want to know who calls our memory allocator "New"... Sorta like a stack trace. Using an actual profiler is sort of difficult 'cause it's a parallel application. Thanks, --peterm \_ Not sure about parallel application, but how about looking into ccured? It reads in code, analyzes it, then generates another C code with annotation that could be useful. Never used it myself though. \_ I've heard very good things about Purify but it is not free. Also take a look at other tools used for Mozilla development: http://www.mozilla.org/projects/xpcom/MemoryTools.html Please tell us which tools you ended up using and what you thought about it, thanks! \_ seconded. it's been years, but I recall purify being able to summarize how much memory was allocated by what code very much like op is asking, e.g. counts of how many times a particular calling context was used to hit malloc. don't recall whether there were limits to how many levels of caller it tracked. \_ What is your platform (OS, version, etc.)? What is your compiler (vendor, version, etc.)? \_ It's definitely a problem with our code. Three compilers, 3 platforms: gcc 3.2 linux, HP cc on 21264, xlc on AIX. \_ The Boehm Collector is free, and can be used to detect leaks. http://www.hpl.hp.com/personal/Hans_Boehm/gc \_ valgrind is free, Linux only \_ I thought you said Viagra |
2005/2/7-8 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers, Computer/SW/WWW/Browsers] UID:36090 Activity:moderate |
2/7 http://www.cs.ucla.edu/~kohler/pubs Read the first paper. Not too technical and quite readable. I hope it gets accepted into the prestigious WMCS, C&I conference. \_ That rules. \_ i guess it's nice to know that it's not just me. \_ Heh, ditto that. Maybe Phillip should write up a more in-depth study on the subject? \_ Cute. \_ The log graph on page 10 rocks. \- Did you actually submit that? \_ PROFESSOR Kohler doesn't have a csua account. |
2005/1/28-30 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Editors/Emacs, Computer/SW/Editors/Vi] UID:35967 Activity:very high |
1/28 emacs question: How can I specify a keyboard combo for saving the file? I find "control x s" awkward. I would like to use "control x \" instead. \_ put this in your .emacs: (global-set-key "\C-x\"" 'save-buffer) to get rid of C-xs for saving, you can use: (global-unset-key "\C-xs") \_ Thank you. That's awesome. I tweaked it like this: (global-set-key "\C-x\C-\\" 'save-buffer) Now it works great. Thanks! Now it works great just like jove. Thanks! \_ As someone who's switched from jove to emacs (many years ago), and also from random package X to random package Y, I urge you to learn and use the default bindings. If you don't, you can't ever use the package outside of your own environment; your buddy says, hey, here, fix this piece of code in my buffer, and you can't move the cursor because you defined the move-cursor commands to be like the Doom bindings ... -- one who's been there \_ Seconded. I also recommend learning vi to the point where you are comfortable editing code using it b/c one day you will end up crunched for time and stuck on a box w/o emacs and the last thing you want to worry about is how to insert text. \-In the case of C-xC-s/C-xs, I think it is a good idea to stick to those bindings unless there is some weird reason not to [like C-q/C-s lossage]. In some other cases it may be reasonable to swtich. You know there is nothing that says you have to unset C-xs ... I suppose since C-x\ is not normally bound having both isnt too bad. Re: vi ... you probably want to be able to use vi enough to get emacs running and do basic edits but that is a long way from being able to edit code. In fact the whole approach to editing code is different between emacs and vi, so if you see them as interchangable [do i use ESC-l, or C-f to move to the right], then you are likely not using emacs correctly/fully [e.g. M-x compile etc]. --mr. emacs \_ My emacs session generally has mh-rmail, gnus, w3c, gdb, compiles and dozens of buffers open at any given time. At one point in my life I used to use emacs client/server regularly. However, I still think that knowing how to switch btwn emacs and vi is a valuable skill (ex i is to insert, a is to append, hjkl is to move, :1 is first line, G is last line, / to pattern match, % is to paren match, this will be good enough for 95% of all problems). \- By all means go for the "95%" but that is a long way from "I am comfortable working on large projects in either emacs or vi and merely prefer emacs." |
2005/1/21-22 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Java] UID:35849 Activity:high |
1/21 Thought this was an interesting read: http://paulgraham.com/noop.html I tend to agree with him, as I've seen relatively little gain from such languages as C++ and Java in terms of creating better software. \_ I thought it was pretty sophomoric, really. OOP is a tool that is often used poorly. If used well, his comments are all wrong. But that's the same of any technique. \_ Actually, I think you missed the point. If a tool is often used poorly, then why do we have the tool in teh first place? i.e. if a hammer is poorly designed so that people use it the wrong way, get rid of the hammer and find a better one. OO is often used poorly because it's been designed poorly. I.e. people think it's "cool" to use C++ or Java to program in because it's got wonky crap features in it like templates and object overloading and container classes. There are so many tacked on features in Java nad C++ now that you need tomes and tomes of printed material to just document the stuff. So programming becomes basically a websearch project, which it shouldn't really be. We don't need six layers of abstraction to get to pushing bits over TCP/IP. We also don't need six layers of abstraction to calculate the cost of a pair of shoes being bought online. \_ Ok, I'm not pp, and have absolutely *no* opinion on the relative merits of C or C++ or Java or whatever, but I have to say something about your tool comment. In my observation, the *vast* majority of people do not know how to use a toilet plunger correctly. Does that mean we don't need toilet plungers? Can you suggest a superior tool for the job? One other solution is to have a basket full of pointy sticks next to the toilet which users can use to break up their turds with a stabbing motion. This is certainly a more self-expanatory tool, but it is also inferior. First of all, it doesn't help you if the offending turd has already passed the U-bend, and second of all, it leaves you with a shit covered stick that you have to dispose of. \_ Hehe. Wonky features like container classes. I think the fault of C++ is not the amount of features it has (most of them are there for a reason) but the way they fail to come together as a coherent, organic whole. Stroustrup is a smart guy, but an artist he is not. It's telling that you think Java is featureful, Java is one of the most featureless languages I know of. -- ilyas \_ Well Strou built it on C so it can't really help being ugly. It feels like it wants to be another language but it lives in C land for practicality. Kind of how Windows lived in MS-DOS for so long. \_ In the US of A, we have the FREEDOM to use C++ poorly \_ No, I didn't miss the point. The point is crappy OOP gives crappy results. OOP used well has huge benefits. That's the difference between a beginner and an experienced SE. |
2004/12/20-25 [Computer/SW/Languages/C_Cplusplus] UID:35366 Activity:nil |
12/20 Looking for skilled, full-time C or C++ software developer, working with network simulation software. In L.A. See /csua/pub/jobs/snt. \_ With an office environment like that: "We really don't have any cubicles with tall walls - you'll probably have your own 6' folding table, sharing a room with 2-5 other developers." Who wouldn't want to work there! \_ Yeah ... we are evaluating moving to a bigger office next door, I guess I'll update the posting if that becomes imminent. |
2004/12/14 [Computer/SW/Languages/Perl, Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Misc] UID:35286 Activity:insanely high |
12/13 http://khason.biz/blog/2004/12/why-microsoft-can-blow-off-with-c.html Why Microsoft Can Blow Off with C the Language (humor/funny) \_ not really. -tom that's because tom holub is the anonymous humourless nuker _/ \_ Feel the babelfish flow through you. \_ Any body who thinks Fortran hasn't seen widespread acceptance hasn't spent much time outside of the world of software development and systems administration, methinks. Out where I do my civil engineering thing, Fortran is the standard langauge. -- ulysses \_ Not the law is clear? There is a beard - there is a success. There is no beard - you are guilty. |
2004/12/9-10 [Computer/SW/Languages/C_Cplusplus] UID:35232 Activity:high |
12/9 What is the option for gcc to allow C++ style comments for C files? -TIA \_ They're allowed by default. You can disable them with -ansi, if you want. --mconst \_ oh. the wind river gcc must have -ansi on by default. |
2004/12/8-9 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages] UID:35217 Activity:kinda low |
12/8 When people say null string or empty string in C, does it mean a char pointer that's NULL, or a char array whose first char is '\0'? Thanks. \_ Both, because it's essentially the same. However, I think they probably mean the latter. I assume you mean a pointer pointing to NULL, and not a pointer which is NULL, which makes no real sense. \_ What's I'm thinking is that for "char *str", it can be either "str == NULL" or "str[0] == '\0'". So you're saying that for the former, there is no string; and for the latter, there is a string but it's a null/empty string. Correct? \_ Possibly, but if you were to malloc a string and assign its lvalue to *str's rvalue then str==null means that you are checking to see if you lost the rvalue for the str. So theoretically the string could still exist if it hadn't been probably freed and you'd have a memory leak. For the latter if you created an automatic character array the memory stays assigned to str regardless of terminating it at the beginning. There is no way to release the memory for an automatic variable unless you do something really wonky. So neither really checks for a lack of a string. The former checks to see if the pointer is pointing to a string, the second checks to see if the first char of a string is the terminator. \_ The latter. "Empty string" is a better term to use than "null string". \_ I always assumed that an empty string is a string that exists but is empty, ie "", and that NULL string refers to the case where the string pointer is NULL. /me shrugs \_ Typically you see this as char* p = NULL. p is a char pointer. p points to NULL. \_ If the term uses "string", that means it's NUL-terminated. Therefore it means "". A char* that's NULL is a null pointer. But probably prefer "empty string" for clarity. \_ You mean a char* that points to NULL. a char* that is NULL, well, that doesn't exist. Since an array is passed like a char* in C, a string which is "" is essentially the same a char* pointing to NULL. \_ Err, yeah. I think you might want to rethink that position. \_ What? The previous poster's explanation and terminology was correct. \_ char* cptr = NULL; // null pointer char* cptr = ""; // empty string (== "null string" (?)) // "" is \0 in memory. Those aren't the same. You can deference the empty string. |
2004/12/8 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Java] UID:35214 Activity:very high |
12/8 For person who wanted to know how to overload new[], the general syntax is void * operator new[](size_t) { //do whatever you need to do with size_t and return an array pointer } -williamc \_ And if you're going to do this madness, be sure to overload delete[] as well. \_ Cool, thanks. Now I remember why Java was invented... \_ The original poster's C++ program was too slow, so he's using obscure C++ features to make it run faster. How would Java be better here? \_ In order to remove an optional feature? \_ Yup, that's why languages like C++ and Perl suck. I've used both for years, and the things you can do with C++ are just fun fun fun. Next time you feel bored, insert delete(this) in your code and see what happens. \_ Don't knock what you don't know how to use. I've been in many situations where `delete this` came in quite handy for memory management issues. Instead of sitting here complaining about how bad a language is because it lets you do something you don't understand, take half a second to realize that there's people in the world who actually know how to program. \_ Doctor, it hurts when I delete(this)... \_ Son, you need to realloc(penis, 6 * INCHES); |
2004/12/7-8 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages] UID:35200 Activity:low |
12/7 Optimization time: gprof shows 310k calls to a certain constructor (a very simple, very important object that is often stack-allocated into large arrays- eg "MyObject msgs[1000];"). Rather than calling the constructor 1000 times, is there a way to have a special array ctor that's called (once) and zeroes out the array en masse? TIA. \_ Geezus, why are you constructing 310k objects? Make a static array of objects at the beginning of runtime. \_ I am, when possible. It's a realtime system (= no dynamic memory allocation) so e.g. several queue objects have to buffer about 15k messages statically. The rest are open to optimization, but a specialized array constructor (if it exists) would be nice. (nb: by "nice" I mean "not at all critical") Oh, and if it helps for those in a similar situation: MyObject contains a couple small arrays; it's much faster to zero these out manually with a for loop than with memset(). -op \_ Man, I hate people like you. Why didn't you give the complete environment information in the first place? What type of RTS system are you using and in what form factor? How much total RAM do you have and what form is it in? And why the hell are you using an OO language for small RTS apps? \_ Sorry, I was just curious if C++ had a specialized ctor for objects created in an array; I didn't realize I was creating a tone of urgency. Anyway, system is not resource- constrained at all (P3 in a VXI chassis, 512M ram, etc) & I'm coming to the conclusion that I can't just define MyObject::MyObject[] (). \_ Yes you can, you can overload new[]. \_ Ok, this might be helpful; can you elaborate? What would the constructor declaration look like? \_ If you want the array zeroed out without any object construction occuring, there are a few things you can do: (1) Create a default constructor which doesn't do anything (2) Overload new[] as suggested above to accomplish this (3) Allocate the space for the array using malloc or calloc instead of new and then use placement new to do the construction. Specifically, placement new lets you construct an object into a memory location you have allocated yourself. The benefit of this is that your program would only need to spend time constructing an object when you want to put it in the array instead of when you allocate the whole array. -emin |
2004/11/10-11 [Computer/SW/Languages/C_Cplusplus] UID:34810 Activity:low |
11/10 In ISO C, since the type for difference between two pointers is ptrdiff_t, does that imply the correct type for array indices is ptrdiff_t? \_ The standard says only that the array index is of an integer type. \_ I see. Thanks. |
2004/11/9 [Recreation/House, Reference/BayArea, Computer/SW/Languages/C_Cplusplus] UID:34774 Activity:nil |
11/09 I need to find a storage place in south bay for lots of books and also some furniture and electronics. To save money, I prefer a non-A/C place. Should I worry about moisture damange? Does it matter if it is ground floor or up? Thanks. |
2004/11/5-7 [Computer/SW/Languages/C_Cplusplus] UID:34697 Activity:high |
11/5 In C, why is the "offsetof" macro defined to be of type size_t but not ptrdiff_t? Thx. \_ Probably because ptrdiff_t is signed and size_t isn't. \_ How does being signed make ptrdiff_t less portable? \_ Imagine a 16-bit C implementation, where int is 16 bits, long is 32 bits, and the maximum object size is 64k - 1. size_t can be unsigned int, but ptrdiff_t has to be long; you save time and memory by using size_t when possible. --mconst \_ Who said anything about portability? It looks like one of those cases where since the value is always >= 0 the standards guys use an unsigned type. |
2004/11/4-5 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Misc] UID:34675 Activity:kinda low |
11/4 I'm learning Fortran 90 for work, and it's suddenly very clear why C became so popular. \_ so, what's a good language for numerical stuff these days? \_ Sadly, the really isn't one. Fortran 90 is still used, C++ is used a lot as well. Niether is really good for the task. \_ [Matlab] equivalence class if you don't care about speed :). -- ilyas \_ Jesus fucking christ. I actually agree with ilyas on something. There must be something wrong with matlab I have not noticed. \_ Shut up Rob. \_ Hi tom! \_ uh, what? -tom \_ Oh eat it you bitch! I've got the SHOOEEE! |
11/23 |
2004/10/29-30 [Computer/SW/Languages/C_Cplusplus] UID:34449 Activity:very high |
10/29 C++ is so freaking BROKEN. Augh! \_ Just use C. \_ Would if I could. \_ No, you are. C++ works just fine, and far better than C for many purposes. \_ C vs. C++. FIGHT!!! \_ True, it's better than C for many purposes, but at the very least it has some serious lexing/syntax issues. \_ Most of the warts stem from backwards compatibility with C (primarily integer promotion, operator precendence, etc.). \_ Bull... Shit... Things which are broken in C++: Confusing Scoping Operators Confusing auto creation vs. explicit instantiation of objects. Confusing auto creation vs. explicit instantiation of objects. Ability to overload things like new. Ability to do crappy stuff like delete this. Multiple Inheritance Friends (god, wtf was Bjarne thinking?) Sticking classes in .h files. Templates (good idea, but crap implementation). STL was too damn late in coming so nobody uses it. Language is too frickin' big. We should've adopted Objective C over C++. C++ is just a dog of a language. Just take a look at MFC and its mess. \_ cs61b got you down? I've actually seen alot of the stuff on your list used in VERY effective ways. Most of your complaints sound like the things newbies whine about. Train harder, grasshopper. \_ A lot of the things you list are not broken. Just because something is confusing to _you_ does not make it 'broken.' Just because something is an advanced feature for which you see no use (overloading new) does not make it broken. However, I will agree that C++ is combining too many worlds in a poor and inelegant way. Still, I have to respect it in that you CAN get work done in it. -- ilyas done in it. We would not have been better off with ObjC over C++, though ObjC is certainly a much smaller language. One reason is, ObjC uses essentially the smalltalk object system, which is not suitable for many systemy kinds of programming. -- ilyas P.S. My favorite MFC moment is seeing stuff like: template <class T> class Foo : public T { ... } \_ This is typically called a shim class. And? \_ There is no and. I just find the idiom amusing. \_ You learned Java before C++ right? It's hard to move to a real language after playing with toys for a while. I've used all the above features well, and use STL heavily. (You didn't even mention streams. Amateur.) \_ Actually, I was thinking more of obvious stuff like the << and >> template problems, and the fact that :: is both the namespace separator and the name for the "global namespace." (Which becomes a problem when the C++ lexer throws away whitespace...) -op \_ How is :: the "name" for the global namespace? If it were, then you'd access globals by ::::foo, yes? Isn't the "name" for the global namespace epsilon (nothing)? :: is always a namespace separator. \_ Sorry I didn't state it in explicit theory terms, but it amounts to the same thing. If you want to specify the global namespace, you begin the identifier name with ::. ie ::foo:bar. I was just using the same \_ A single colon is not a namespace separator. Did you mean ::foo::bar? Are you sure you're programming in C++? terminology used in a C++ book I read a while ago. It maybe have been Bjarne, but I can't remember exactly. \_ Errr, read the post above you again. pp is exactly right. -- ilyas \_ Errr.. read my post again, I agreed with him. \_ Right. This works just like Unix pathnames -- foo/bar is a relative path, and /foo/bar is an absolute path. What problems does it create? Yes, >> in templates is stupid. \_ I just had this experiance, if you have 2 identifiers in a row, ie "id1 id2", and you try to force the global id2, C++ throws out the white space, so instead of having two identifiers, you get 1 big identifier "id1::id2", which, of course, it can't find. \_ That doesn't even make sense. White space separates tokens. I don't think you know what you're talking about. \_ Maybe it's only true in gcc 3.4, go ahead and try it. \_ I don't have access to gcc 3.4 (nor do I want it). That sounds like a bug in a compiler, not a language flaw. \_ It doesn't make sense, and you haven't provided enough instruction about how to reproduce it. What do you mean "have two identifiers" in a row? When would that be legal at all? In what context? How about some real code? \_ If you like: #include <iostream> class B { }; class A { public: B foo(); }; B ::A::foo() { std::cout << "Hello" << std::endl; return B(); } int main() { A a; a.foo(); return 0; } fails with this error: test.cc:11: error: `class B::A' has not been declared test.cc:11: error: ISO C++ forbids declaration of `foo' with no type \_ But you shouldn't need to have (or be expected to have) the global namespace qualifier in A::foo's definition anyway. How about an example where it's actually a problem? The scoping operator (::) does need to discount whitespace, because otherwise you wouldn't be able to break apart really::really:: long::lines. \_ The case where I ran into this as a "real problem" spanned multiple files and thousands of lines of code. So I contrived an example. I'm pretty sure that's a normal thing to do. \_ Explain how. C++ doesn't allow nested functions, so you either define functions in global scope or within a namespace. If you're already in global scope, you don't need the leading ::. If you're not in global scope, why are you defining a function in one namespace from within another? \_ And inablilty to explicitly declare a function in global scope doesn't strike you as a little wierd? Even if it is usually unnecessary? I never said I couldn't do something else. I did something else and it worked, that doesn't mean this isn't bad design. \_ And it doesn't strike you as weird that you want to do something like: class A { void f(); }; namespace foo { void ::A::f() { } } ? I mean, really. Even if you could do it, you're just making your own code more unmaintainable by defining functions where they don't belong. \_ I think you must be using non-C++ concepts and trying to for them into C++. By the same token, you can't take English idioms and translate them word- for-word into Spanish. \_ Most of my work is research outside the concepts of any language. SO yeah. \_ No, it doesn't seem weird. Most lexically-scoped languages allow things to be declared only in the current scope. \_ Maybe so, but in C++ you have to define methods explicity in a namespace, but you can't expicitly declare the namespace. Perhaps you could argue that it's just an unfortuate mix of C++ features, but that's bad design isn't it? \_ What do you mean? You don't have to define methods explicitly in a namespace (you put them within a "namespace ns { ... }" block). And how is that not explicitly declaring the namespace itself? And no, it's not a bad design. Have you not noticed that you alone seem to be the only person who has any issues with this? Sane programs written properly won't have these issues. \_ Let's all switch to http://digitalmars.com/d \_ BCPL is the STANDARD! |
2004/10/25-26 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Security] UID:34329 Activity:low |
10/25 I have a problem in C++. I have a bunch of autogenerated classes that I need to be able to convert between. I made a templeted cast function in a common header file, but it needs to access a protected function in the generated classes. Is there any way to make a templeted friend function shared between all those auto-generated classes? I tried, but I got an error that the function hadn't been defined. From the first auto-gen'd class. \_ My head hurts. \_ Hahahaha, you made my day! \_ is there some reason you can't make better use of polymorphism and virtual functions instead of all this conversion crap? \_ Yes. http://www.llnl.gov/CASC/components/babel.html \_ Could you explain the relevance of this URL to why you can make better use of polymorphism and v-fncs? -npp \_ Any reason not to use a public accessor? \_ This is what I've done for now, but I would prefer not to. \_ Thing is, friend templates are a mess with current compiler implementations. I'd hesitate to depend on that feature if you want any kind of portability. Another possibility would be a template member which does the conversion for you from/to an intermediate type. \_ are you allowed to modify the autogened files at all? you could convert the private members to protected. then use explicit naming to access the protected members from your casting function. \_ I'm not sure what you mean by this. Can I access protected data with a non-member function through some kind of explicit naming? |
2004/10/24-25 [Computer/SW/Languages/C_Cplusplus] UID:34317 Activity:nil |
10/23 What's the difference between a mode A, mode C, and mode S transponder? Mode A/C is having altitude/no altitude encoding right? What about mode S? -squawk ident guy \_ What the hell are you talking about? -half of soda |
2004/9/28-29 [Computer/SW/Languages/C_Cplusplus] UID:33807 Activity:nil |
9/28 Does anybody use this sort of style for for loops in C: Foo *ptr; int i; for (i=0; i < arraySize; ptr = &array[i++]) ? Does it work well? \_ Uh, what's the point? If you're going to go through the trouble of having an explicit index and doing the add-and-dereference thing (which a compiler should optimize away anyway), why not use array[i] instead of ptr? \_ Aside from the point above, looks like you're not initializing ptr on the first iteration. |
2004/9/27 [Computer/SW/Languages/C_Cplusplus] UID:33781 Activity:high |
9/27 How are functions like C's printf made? It can take 1-N arguments and the 2-N arguments can be of almost any type. How do you write a function like that? Surely printf wouldn't work with 500 arguments? \_ probably would, depends on how much stack you have. See <stdarg.h> \_ man stdarg \_ Has to do with the ... function argument notation. Check your K&R. |
2004/9/23 [Computer/SW/Languages/C_Cplusplus] UID:33716 Activity:high |
9/23 Is the a C++ equivelent to the C realloc function? \_ realloc(). But seriously, maybe you want an STL container that automatically grows. \_ Not in this case. I just need to grow a char array automatically myself. (For speed reasons) Really, It's a very isolated place in the code, and I'll probably just end up switching the news and deletes to mallocs and frees, and therefore use realloc when I need to grow the array. But I was curious if there was an equivelent that would work with new and delete. \_ No, there is no equivalent for new/delete. You probably should avoid using arrays and new/delete directly anyway. It's hard to make it exception-safe. Either use an STL container (e.g. vector or string; shrinking a vector doesn't free memory to the system though) or write your own container that uses malloc/free/realloc. \_ If you need to do this for performance then you should avoid new/delete, and especially STL containers. STL containers require new elements to be default initialized, etc. I wrote my own "pod_vector" for POD types that uses malloc/realloc etc. for high performance. If you do this, it's important to have unit tests. |
2004/9/20-21 [Computer/SW/Languages/C_Cplusplus, Uncategorized/German] UID:33644 Activity:moderate |
9/20 C question. If I have #define NAME FOO is there any way to use NAME to create a string "FOO"? Thanks. \_ Do you mean #define NAME "FOO" ? Or do you want to declare a variable? Can you show NAME used in a sample line of code? \_ What I want is something like, say, strncpy(myArray, $$NAME, sizeof myArray); and I want $$NAME to compile to "FOO". \_ What's wrong with a const char* string? You want #define NAME "FOO". \_ Because the #define is at somewhere else that I can't change. \_ Short answer yes, but it involves so much hackery that it's not worth it. The link below used to explain how but it's 404'd now, maybe you can google cache for the original. http://userpage.fu-berlin.de/~ram/pub/pub_isews26/c_preprocessor_applications_en http://tinyurl.com/6xmuz \_ ow ow ow! (the relevant code) //enumstring.c #include <stdio.h> #define NAMES C(RED)C(GREEN)C(BLUE) #define C(x) x, enum color { NAMES TOP }; #undef C #define C(x) #x, const char * const color_name[] = { NAMES }; int main( void ) { printf( "The color is %s.\n", color_name[ RED ]); printf( "There are %d colors.\n", TOP ); } (stdout) The color is RED. There are 3 colors. \_ Am I missing something? What's wrong with using #NAME to stringify? e.g. #define str(x) #x \_ Then str(NAME) gives me "NAME", but I want "FOO". |
2004/9/20 [Computer/SW/Languages/C_Cplusplus] UID:33628 Activity:moderate |
9/20 What's the best way to read in an entire file into a string in C++? I know it's a fairly small file, so size isn't so much of an issue. I'm thinking of doing something like ifstream ifs("foo"); ifs.unsetf(ios::skipws); istream_iterator<char> begin(ifs); istream_iterator<char> end; string contents(begin, end); I should check !ifs first to see if the file opened ok, but what if the istream_iterator fails to read something instead, and what kind of performance should I expect to get? It looks pretty clean, but not very efficient. Thanks. \_ Without knowing your design constraints, there is not "best" answer. \_ Without knowing your design constraints, there is no "best" answer. Note that earlier versions of the C++ lib don't have std::string expand geometrically like vector, so you don't have guaranteed amortized constant time growth. \_ I'm working on fairly modern systems. This isn't really performance critical, but just out of curiosity, I'd like the fastest solution that's still relatively clean. Thanks. |
2004/9/16-17 [Computer/SW/Languages/C_Cplusplus] UID:33567 Activity:nil |
9/16 In emacs how do you say "I want to kill all of the buffers that end with hello.log", in cases where you have multiple */hello.log files? \_ Here's a way with keyboard macros that takes no thought: C-x C-b C-x C-o C-x ( C-s .log RET d C-x ) C-u 100 C-x e x \_ Here's a way with lisp programming which forced me to whip out some documentation: (defun remove-if-log (buf) (if (string-match "\\.log$" (buffer-name buf)) (kill-buffer buf))) (defun kill-log-bufs () (mapcar (function remove-if-log) (buffer-list))) |
2004/9/7-8 [Computer/SW/Languages/C_Cplusplus, Computer/Theory] UID:33385 Activity:kinda low |
9/7 what is the answer to a negative number modulo some positive number? is it that same negative number? \_ -1 % 4 = 3, -2 % 4 = 2, -5 % 4 = 3. I think. \_ That's not what bc or mscalc.exe say, but MS Excel agrees w/you! \_ Ask Dr. Math: http://mathforum.org/library/drmath/view/52343.html \_ In mathematics, a mod b where b is positive always returns positive. In C and C++, the '%' operator is pronounced 'remainder' and the results of a % b if a is negative is implementation defined. \_ Also Wikipedia: http://en.wikipedia.org/wiki/Modular_arithmetic |
2004/8/30-31 [Computer/SW/Languages/C_Cplusplus] UID:33228 Activity:high |
8/30 Ok this is pretty basic but... is there a way to "escape" text to avoid it being substituted by C preprocessor macro expansion? \_ Wouldn't that functionality make C preprocessing as powerful as lisp's quasiquote/escape? -- ilyas \_ Squish! Isn't it illegal to talk about lisp on the motd?! \_ In general no. \_ What are you trying to accomplish? -- misha. \_ Oh, nothing interesting. We use CPP to preprocess some in-house language files. Normally CPP doesn't expand macros inside strings I think but it seems to happen here. Anyway it's not important. I'll go ask the dude that wrote the thing what it's doing. |
2004/8/18-19 [Computer/SW/Languages/C_Cplusplus] UID:32995 Activity:very high |
8/18 Doesn't math.h define min() and max() functions? What should I include to get them? I'd rather not do the (a < b) ? a : b thing. Thx \_ No. Many programmers define it as a new macro. Don't know what gcc people do, offhand. \_ OS X has fmin(3)/fmax(3) which conform to ISO/IEC 9899:1999(E). Linux might have these too. \_ If you do the macro, do it right at least: #define min(a,b) (((a) < (b)) ? (a) : (b)) Keep in mind that evaluates an expression twice. If this is C++, <algorithm> defines std::min() and std::max(). defines std::min() and std::max(). \_ ... and, if you do define them as macros, name them as MIN and MAX. Don't make things with macro semantics look like normal functions. Anyway, to the OP, what would you have math.h do? C doesn't offer templates or function overloading, so would you have it define separate min/max functions for the various numeric types (and possibly combinations of types), using different function names for each case? --jameslin \_ Sidenote: About macro names. Why are putc() and putchar() defined with lower-cases? |
2004/8/10-11 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:32805 Activity:high |
8/10 C question. Is there anything wrong with the following? const my_struct_t **pp; pp = malloc(sizeof(my_struct_t *)); pp = realloc(pp, sizeof (my_struct_t *) * 2); "gcc -Wall" doesn't complain. But the M$ compiler (cl.exe) complains about the realloc line: t3.c(12) : warning C4090: 'function' : different 'const' qualifiers t3.c(12) : warning C4022: 'realloc' : pointer mismatch for actual parameter 1 Thanks in advance. \_ Your code is correct. The warnings above are both wrong, and in fact the same compiler recognizes the code as safe in C++ mode (which is stricter about const). --mconst \_ I'd ask why GCC isn't complaining. Consts shouldn't change. It might be that because there's nothing between the malloc and the realloc, GCC is noticing that the value of pp does not actually changem while MS sees you are writing to a const and bitches. \_ But what I'm trying to realloc is an array of variable pointers to constant structures. The array elements (pointers to constant structures, const my_struct_t *) are not consts and do change. It's just that the structrues that the array elements point to (const my_struct_t) don't change. I think it's just stupidity on M$'s part, but I just want to make sure. \_ YMWTS http://www.parashift.com/c++-faq-lite/const-correctness.html \_ You sure you're not compiling in MS as a cpp file? \_ It works as a CPP file -- see above. --mconst \_ My file is a .c, and I compile like "cl t.c" with no options. I tried both version 12 and version 13 and they gave the same warning. \_ Where is the 'function' name declared? \_ BTW, pp = realloc(pp, ...) is a bad idea. If realloc fails, you've just clobbered your old copy of pp and no longer can free it. --jameslin \_ Yeah I know. The above was just to illustrate the type checking warning. But thanks. \_ Does it still complain if you do something like: typedef const struct foo *pfoo; ... pfoo *p; ... |
2004/8/5-8 [Academia/Berkeley/CSUA, Industry/Jobs, Computer/SW/Languages/C_Cplusplus] UID:32725 Activity:nil 50%like:36020 |
8/5 Another Mountain View job. Senior C++ developer. /csua/pub/jobs/coral8 _________________________________________________________________ |
2004/8/4 [Computer/SW/Languages/C_Cplusplus] UID:32675 Activity:nil |
8/4 A little humor for C programmers in the audience: http://csua.org/u/8g8 |
2004/7/29-30 [Computer/SW/Languages/C_Cplusplus] UID:32574 Activity:moderate |
7/29 How do I describe scope in C? Is it outer/inner scope? Higher/lower scope? Parent/child scope? I forgot. Thanks. \_ "Trivial C Question Troll", I love you! \_ you're thinking in OO terms. C has "local" and "global" scope. \_ C99 has more than two levels of scope. For instance, each for loop has its own scope. Also, gcc lets you define functions inside other functions, as a (non-standard) extension. -- ilyas \_ Hasn't it always been the case that each pair of {} has its own scope, even before C99? \_ Yeah you are right. -- ilyas \_ Yes. \_ I was going to say that, but was afraid the OP might be more leet than me. \_ What I'm thinking is something like: void foo(void) { ... code 1 ... { int i; ... code 2 ... { ... code 3 ... } } } So "i" is defined in code 2 and 3, but not in code 1. How do I describe this? \_ The scope in C is really simple, it's based on block scoping where the blocks are defined by curly braces. If it's at the beginning of a curly, it's scope is anything between the curlys, ergo the term "block." Some people call it "area scoping" defined by the "area" of code defined by the braces. Some others call it "brace" scoping. \_ If code 3 is not a function called from code 2, you just answered your own question. \_ You can't define a function inside another function in C. \_ Duh. But code 3 could be a function call that needs 'i' \_ Huh? I thought the op is talking about nested inner blocks. Who said anything about functions? \_ i is in scope in code 2 and 3, but not in scope in code 1. \_ Although this isn't the example you are giving are you thinking about lexical vs dynamic scope? \_ The original question is just that which pair of adjectives to use to describe the scopes in the same file. \_ Nested. Inner. Take your pick. |
2004/7/27-28 [Computer/SW/Languages/C_Cplusplus, Computer/SW/WWW/Browsers] UID:32514 Activity:nil |
7/27 Does the Mozilla mail client have any kind of macro language? Currently I use emacs for mail since I really like being able to customize it and write macros. Thanks. \_ Yeah, combining macros with email is great. \_ OUTLOOK IS THE STANDARD! USE VIRUS! |
2004/7/15-16 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Editors/Emacs] UID:32311 Activity:low |
7/15 In emacs20, how do I set indent-tabs-mode to nil using ~/.emacs such that emacs will use spaces instead of tabs to indent in all my C files? I tried "(setq indent-tabs-mode nil)", but the value is still t. Thanks. --- yuen \_ use setq-default, or look up hooks in the emacs manual. \_ I see. Now c-mode-common-hook does the trick. Thx. -- yuen |
2004/7/13-14 [Computer/SW/Languages/C_Cplusplus] UID:32265 Activity:high |
7/12 Someone please explain the following? ((size_t )& ((SomeVar *)0)->Field); \_ It's a hideous abuse of C++ syntax and results in undefined behavior. It appears to be an attempt to find out the offset of the member "Field" in the class/struct type SomeVar. Ow, ow ow. \_ This is actually not undefined, in C or C++. It is hideous, though; it would be nicer to #include <stddef.h> and just use though; it would be nicer to #include and just use offsetof(SomeVar, Field). In C++, you might also be able to use a pointer-to-member (&SomeVar::Field), depending on what you're trying to do. --mconst \_ You're saying that dereferencing a null pointer is not undefined? -emarkp \_ Right. In C99, you're allowed to dereference a null pointer as long as all you do is take the address of it afterwards; see 6.5.3.2p3. In C++, it's not very well stated in the standard, but the current view of the committee is that you're allowed to do anything with a dereferenced null pointer as long as you don't trigger lvalue-to-rvalue conversion or try to write to the memory; see http://csua.org/u/86c --mconst \_ Fascinating. I usually follow Herb Sutter's articles to keep me up-to-date. Thanks for the info. I just wish they'd add a typeof operator and ditch the nonsensical syntax of calling a static member function though an instance (requiring T::func() instead of allowing T x; x.func(); ). -emarkp \_ Although 6.5.3.2 states that &*E is legal, it does not address the issue in the original question, which involves an additional structure member access. I believe that it is implementation-dependent. It is the compiler vendor's responsibility to provide an offsetof macro in stddef.h that works with their own implementation, but it need not be portable. --jameslin \_ You're right, I take it back -- the original statement is actually undefined in C99. It works for arrays, but not structs. (It is still valid C++, although it's not guaranteed to produce the value you want.) --mconst \_ So shouldn't your "SomeVar" be "SomeType" for clarity? That confused me for a bit. |
2004/7/12-13 [Computer/SW/Languages/C_Cplusplus] UID:32241 Activity:very high |
7/12 In C, what should be the data type for array indices? I usually just use "int". Thx. \_ YES! The 'trivial C question troll' is back! I love you, man! \_ int is fine, but I often find myself using unsigned int, especially in for loops where I compare unsigned int i against some maximum- value variable that is also unsigned int. \_ It's an integer type. a[i] is the same as *(a + i). Can be signed, can be negative. Why do you care? \_ I'm just wonder if the K&R spec says anything about it. I don't have the spec here. \_ size_t \_ Are you sure? It's not, say, ptrdiff_t? Isn't a[-1] legal? \_ You can use ssize_t if you like, I personally prefer size_t since stuff like a[-1] can often lead to bugs if you aren't completely sure what a points to. \_ The original question wasn't what type /should/ be used; it was what it *is*. Section 6.5.2.1 of the C99 standard says merely, "integer type" and (as I said before) that a[i] is identical to *(a + i) (from which it should be obvious that the index is an integer type). \_ To settle this question once and for all, just look at the C standard? It says the subscript shall be an integral type. Integral type is defined as char, an unsigned or signed integer type, or an enumerated type. A signed integer type is signed char, short int, int, or long int, and unsigned integer type is the corresponding unsigned type. Clear enough? \_ You could have just said: The C standard (post URL) says the index can be an integral type (signed/unsigned short/long char, int, enum), and negative values are permitted. \_ There is no URL for the C standard. Or not a legal one, anyway. There are various draft standards, though. \_ what about long long? \_ above is for C90. C99 draft standard has somewhat different verbiage, but the spirit is the same. basically all integer types can be subscripts. |
2004/7/2-3 [Computer/SW/Languages/C_Cplusplus] UID:31149 Activity:moderate |
7/2 Is this valid C++ code? It works for gcc but in VxWorks the array is initialized to { 0, 0 }. Just out of curiosity/bitterness. tia. #define IN_Q 0 #define OUT_Q 1 int foo () { int queueTypes[] = { IN_Q, OUT_Q }; ... } \_ Yes. Better yet, use const ints for IN_Q and OUT_Q if it's C++. \_ Yes, perfectly legal and pretty basic. Something that can't handle that is pretty broken. You sure there's not more to it? |
2004/6/29-30 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl] UID:31060 Activity:high |
6/29 I can't remember a bit of C syntax. I have funtion foo that returns a value that I need to put in a variable. If that value is not Null, I want to take some action. Will this work? int bar = 0; if(bar = foo()) do something; \_ Someone should save this for the Classic Trolls Of All Time Hall Of Fame. I wish I had thought of something so simple as asking an arcane C syntax question. --lesser troll than op \_ Maybe you should try an obscure Perl question. \_ How about: if(foo()) {something;} \_ foo() can return NULL, so it's returning a pointer. Therefore bar should be a pointer. Probably it's a char* pointer. So: char* bar = NULL; bar = foo(); if (bar != NULL) { // Do something. } , or, if (!bar) { // Do something.} (but I like the previous one) \_ The null pointer is just an integer equal to zero. If the declaration of foo is 'void foo()' then 'if(foo())' will fail. The NULL pointer evaluates to false. \_ op said he wanted to store the value of foo() in a variable, and also wants to check if it is NULL. (This is common for text-parsing functions.) Hence the code. \_ 1. if the declaration of foo is "void foo()", it can't even return anything, and "if(foo())" won't even compile. What are you trying to say? 2. There is nothing in the C specification that says NULL is necessarily 0. Its value is implementation dependent, although in almost all implementations it's 0. \_ Not exactly. The preprocessor symbol NULL is guaranteed to be 0, but it's not necessarily an integer type (it may be defined to be (void*) 0). NULL is not the same as the "null pointer"; the compiler transforms 0 in pointer contexts to the appropriate null pointer, which may not necessarily be all-bits-zero. --jameslin \_ The answer is yes. The syntax is: if (bar = foo()) | \_ Assign 'bar' to be the return value of foo(). | \_ The value passed to 'if' is the result of the assignment, which is the value of 'bar'. Any non-zero integral value will evaluate as true. \_ "if (bar = foo())" will work, but the compile will probably try to be nice and warn you that you might have mistyped "=" when you really wanted "==". To avoid such a warning, you can do "if ((bar = foo()) != NULL)". With compilers these days, it'll be optimized the same way as "if (bar = foo())" anyway if the value of NULL is 0. \_ And this compiler should be promptly thrown in the trash. In over 10 years of C/C++ development, I've only been bitten by this once or twice. Having to munge my code to avoid spurious warnings only helps newbies who should quickly exit the rank of newbie anyway. \_ Isn't this based on the assumption that NULL == 0 or some equiv. There is nothing in the standard (AFAIK) that requires this. \_ No. When a pointer converts to an int, it must convert to 0 if it is NULL, regardless of the actual bit pattern of the pointer. \_ ic. tnx. \_ Chill down. The compiler gives a warning, not an error. \_ Spurious warnings make it difficult to find real problems. Many software shops have a rule of compiling with no warnings and no errors, so warnings are a problem anyway. \_ Having to munge your code for spurious warnings is a bad thing. However, I challenge your determination that this particular one is spurious. I would want all my developers to NEVER have an "if (bar = foo())" statement. That's IMO, anyway. They can still do it if they want; I wouldn't complain too much if following the rule affected their productivity, what with good people being hard to find. \_ How many more coding guidelines do you want checked in your compiler? Check it in lint instead. Why should I have to avoid legal code because *your* software shop doesn't like that? It's a common idiom, and it takes all of 5 seconds to learn it. \_ I don't think you really read what I wrote. I believe if you got into a meeting with the top 5 coders in your organization, they would agree "if (bar = foo())" is bad form, but they wouldn't bash it over your head, which is what I've been saying. (Of course you can use whatever you like if you're not working with other programmers.) \_ I did read what you read. Your complaint is one of style, which is not what a compiler should check--or at least the complier should have a way to turn off all stylistic warnings. \_ I agree with you that the user should be able to turn off "stylistic warnings". \_ You want to throw gcc in the trash? \_ I was grateful of compiler warnings when I had a very sloppy programmer working on my team. Eventually he was let go after one year. \_ Which is the right thing to do with sloppy programmers: teach them or fire them. |
2004/6/29-30 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Unix] UID:31057 Activity:kinda low |
6/29 Is there a C function to get the name of an opened file from its file pointer (FILE*)? Thanks. \_ I don't know of one. What would happen if there are multiple ways of describing the file? (Symbolic links and the like) \_ the best you can do is use fileno() to get the file descriptor number and then pass that to fstat() to get the inode and filesystem of the underlying file. To get an actual path name from there is difficult, as you could have any number of hard links pointing to the inode, and it is even possible for there to be NO links and there is in fact no file name associated with the file's inode.(i.e. it was 'deleted' after it was opened). If you *really* want to know you could run a search through the filesystem for matching inode numbers. -EricM |
2004/6/18 [Computer/SW/Languages/C_Cplusplus] UID:30883 Activity:high |
6/17 Someone asked me to write them a letter of recommendation. Is there a recommended cookie cutter formula like 1. They did A, B, C. 2. They excelled at D. 3. They left for reason E? I've already asked the person to give me a list of the accomplishments that he would like me to focus on. \_ Academic or industry? For managerial position or grunt work? It matters. \_ industry grunt work. \_ Then you want to write something about what a good employee they are, good team player, always on time, good contributor, and always rose above the call of duty and how much you would like to work with the person again. Yes, lie if you like the person and want them to get the job. \_ Google "writing letter of recommendation." There are lots of resources out there for you. |
2004/6/10-11 [Computer/SW/Languages/C_Cplusplus] UID:30732 Activity:very high |
6/10 Hi, what is "volatile function" in C (or is it C++)? Thanks. \_ They're used when writing vaporware. \_ I imagine it's a method that operates on a volatile object (?) \_ Uhm, no... that wouldn't make much sense, now, would it? I've never used or see someone use "volatile" in all the years that I've been coding C (it's been 15+ years now). According to K&R the volatile modifier is used only variables that supposedly could be modified outside of the executing program. In the years since the original K&R during ANSI meetings there has been some debate over what "volatile" actually means and there hasn't been a satisfactory answer. I've never heard of anyone using "volatile" on declaring a function, I'm not even sure if that would pass the compiler... -williamc \_ Wow, way to look like a fucking dumbass again. "Just because I've never seen volatile used means it, like, doesn't make sense, or something!" Here's a snippet from the C++ standard: "[Note: volatile is a hint to the implementation to avoid aggressive optimization involving the object because the value of the object might be changed by means undetectable by an implementation... In general, the semantics of volatile are intended to be the same in C++ as they are in C." And in C, the volatile type specifier generally denotes something like a memory-mapped IO address, so it's not some totally abstract theoretical thing. \_ Or a variable modified by a signal handler. \_ Google says that they are functions that can return control to some point other than where they were called from. \_ Uhm, that would be highly problematic.... -williamc \_ Uhm, you are an idiot. This is about as problematic as exceptions (that's exactly what they are designed to do). Now I am sure volatile isn't implementing exceptions in C, but your comment's ignorant regardless. \_ Actually, it would be highly problematic in a C program, because C doesn't implement exception handling. It's apparent that YOU have never done any C programming (no, this is not Java, and C++ exception handling is still pretty broken). In addition, you appear to fail to understand how exception handling is implemented in general. -williamc \_ Ok, let me try small words. Poster: "functions that can return control to some point other than where they were called from." You: "That [returning control in this way] would be highly problematic." Except this is NOT highly problematic because that's exactly what exceptions do. You are a moron. \_ It is nice to see people get hot and bothered and make fools out of themselves by flaming on a topic other than politics. Sir, I salute you for caring so much about typecast functions. \_ (Why) I oughta (knock) your block++ off;{!!;} \_ You've never heard of setjmp and longjmp? \_ youse guys are all cracka's! \_ have any of you ever kissed a girl?!? |
2004/6/6 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:30635 Activity:nil |
6/5 How does typedef get compiled into machine code? \_ what the hell are you talking about? C? It doesn't. It's merely a type alias. C compilers don't even do strict type-checking against typedefs; what makes you think it gets to the machine code level? \_ It doesn't get that far. The answer to your question is closer to "How do ints, floats, structs, etc. get compiled into machine code?" |
2004/6/3 [Health, Computer/SW/Languages/C_Cplusplus] UID:30560 Activity:moderate |
6/3 Ok, who wants to share my recursion theory pain? I just spent a really long time on a problem, and I want to make some volunteer suffer like I did. If there's any interest, I ll post the problem. -- ilyas \_ Hah! You want us to do your homework, huh? The problem is trivial. Check the man pages or look it up on Sun's website. \_ It's true that this is my homework, but I did make sure to do it first, before posting. -- ilyas \_ The answer must be in the man pages somewhere. \_ go ahead, i'm game \_ seconded \_ Ok. For the purposes of this problem, we are dealing with functions which accept a set of bitstrings as input, and output bitstrings. The problem is to construct two (computable) functions f and g with the following properties: (a) f and g take two arguments each (b) for any two inputs, f returns a turing machine (TM) where the language it accepts is decidable and disjoint from the language accepted by a TM returned by g. (g must also return a decidable TM). (c) if f is given as input any two TMs (in your favorite bitstring encoding) that accept complementary languages, f returns an encoding for a TM which accepts the same language as argument 1, and if g is given same, it returns an encoding for a TM which accepts the same language as argument 2. Note: if f or g return a 'malformed' bitstring, which does not code a TM, the accepted language is considered to be empty (hence decidable). Note 2: all finite sets are decidable. This problem is very hard. I posted it because I am a sadist. -- ilyas \_ My guess is that you first make f do something reasonable. Then you make g have a copy of f inside it so that g can do the opposite. You said that the problem was very hard, though, so perhaps this strategy runs into decidability problems. \_ Sure, this works fine. You do have to figure out how to make f do something reasonable, though. --mconst |
2004/6/2-3 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Java] UID:30552 Activity:high |
6/2 How do I pass in a PrintWriter object and get back StringBuffer? I'd like to pass in an argument of type PrintWriter and have the output save to my StringBuffer (instead of System.out/err). Thanks. \_ Dude, figure this shit out yourself. This is either homework or work, and the question isn't complicated either way. \_ I was just about to provide code samples, but I think you're right. Teach 'em to fish and all that... \_ Scan through the javadoc for the java.io package \_ Damn... what would they be asking if classes were still in C or, god forbid, vax assembly? I thought java was supposed to make it so easy even people like this can write it? \_ If you ask me, Java got rid of pointers and the associated memory bashing, and the library is a lot bigger (hard to remember the function names). Of course, you also have C++, which combines the worst of both worlds. ;-) |
2004/5/20-21 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/OCAML] UID:30334 Activity:insanely high |
5/20 I have seen some ocaml comments on the motd. What about Haskell? Is it better/worse/about the same? I know it is supposed to "pure" but don't know what this translates to in reality. \_ Haskell is the only language I want to know something about, yet know almost nothing about. I know it's not speedy, unlike ocaml, but has lots of clean ideas, and you can write really short code in it. Haskell is a 'pure functional language' in that it allows no sideeffects. Haskell programmers use something called 'monadic programming' to get around this (say when doing IO). Another way out is to use something called 'uniqueness typing' which is what Clean does. Personally I think insisting on a pure functional language is silly. -- ilyas \_ What value are these languages outside of theory and academia? \_ Troll attempt noted and appreciated. -- ilyas \_ "Trolls are anyone that disagrees with you," a motd person, circa May 2004 \_ You are right, it was a thoughtprovoking question. -- ilyas \_ I was actually quite serious you self righteous bastard. You're always going off about all these obscure little languages and I actually really wanted to know what use they are outside academia but frankly I don't give a damn now. If you don't know or don't want to bother explaining then just don't. I certainly wasn't trolling. --bite me \_ This is a legit. question. What exactly is it that makes this language (and/or any other language you keep talking about on the motd) much better than C? I've looked up things like ocaml and such, but they just seem like ya syntax to learn w/o any added benefit (the resulting code doesn't look any easier to write/debug/maintain than C). Its not that I have anything against learning new prog. langs (I've been working on ObjC to do Cocoa/OSX stuff), its just that I want to know what the real benefit is of these non-C-like langs that you keep mentioning. \_ Well, I can't answer this for you. _I_ find that GC languages with good libraries infinitely easier to get work done in than C. YMMV. Prolog is one of those languages where if you are solving the right problem the solution is 10 lines, and would have been 300 lines in pretty much anything else (not a made up example). Prolog also has fast implementations, since there's a good mapping between prolog code and C. Also, I agree with Dijkstra in that poking with new languages can teach you about programming, so it's certainly good to learn other languages just for that reason, even if you don't plan to use them in practice. -- ilyas \_ The only benefits of C are: there's a C compiler for nearly every platform--okay there's only 1 benefit. GC is a non-issue really, and I've seen as many problems with GC as without. But yes, an important reason to learn many languages is that some concepts are easier to implement in different languages, hence you actually think about doing things differently. It's better to have many tools in the box than to have a reeeeally good hammer. -emarkp \_ Is there something in the language itself that dispose it to slower implementation or just nobody bothers to make the effort? \_ Troll attempt noted and appreciated. -- ilyas #8 fan \_ I don't know about Haskell. Ocaml is about as fast as gcc compiled C. Does that answer your question? -- ilyas |
2004/5/19 [Computer/SW/Languages/C_Cplusplus] UID:30294 Activity:nil |
5/19 Quick poll for professional C++ programmers (that is, you use C++ in code you write for work): Have you heard of Nicolai Josuttis or Andrei Alexandrescu? Both: .. Josuttis only: Alexandrescu only: neither: |
2004/5/19 [Computer/SW/Languages/C_Cplusplus] UID:30293 Activity:nil |
5/19 What kind of coding makes more? Around how much? c: c++: c#: vb: javascript: java: html: |
2004/5/13-14 [Computer/SW/Languages/C_Cplusplus] UID:30202 Activity:very high |
5/12 nCircle is looking for an experienced software engineer. See /csua/pub/jobs/nCircle.sweng \_ so I have been doing java, and I still believe I'm an expert c/c++ programmer. However, if you ask me what are the printf format parameters, I doubt I could tell you much other than %s. So I can definitely get a book on c/c++ and \_ You are not an expert. You are a fool. Fortunately, you are dangerous only to yourself. \_ agree on being a fool part. If you are not making 100k with an expert skill, you are a fool. \_ What expert skill? Not knowing printf? \_ unless you are working with a company that use printf all day long. Not every app require printf, some you'll never need it. start cramming, but I feel like it's pointless. It's like someone asks me what's the difference between a semaphore and mutex, I can't really articulate. Then when I really start doing the kind of work that relates to the topic I can do a very good job. I am bring this up because I want to understand in real world how someone like me get around the barrior. My experiences with a few people at companies is that they can tell the technicle stuff from cover to cover, but their work is just horrible. And they work at extremely slow pace; they don't seem to know how to debug their own code; they use the most inefficient they use the most inefficient algorithms (I would have no problem with that if they can deliever quicker which leaves room for optimization). \_ I'm in the same boat as you, and have been wondering about this... Learning/knowing how to learn, instead of just rememebering details... \_ If you need to ask, you should go and study the subject and know the minutiae. There are people who get by by being brilliant. You are not one of them. If you are, you wouldn't be here asking if you need to know something. \_ C and C++ are quite different from Java. The languages all have different idioms. Being an expert in Java does not make you an expert in C or C++, even with a cram session. \_ All the programming skills are transferable. I was doing all c/c++ programming for 6 years before switching to Java. Picked up java without reading a java book. I all did was have the online Java API in my browser. Now I'm coding with struts framework with online references. In less than a year time at the current company I have already developed 3 voice applications (come in this company without any voice background \_ well, I'd expect going from C or C++ to Java is easier than the other way around. \_ yes, it is. In essence, Java produce bad programmers because java programmers wouldn't know how to manage memory efficiently, they'll also most likely run into alot of memory leaks when trying code c/c++ \_ I think that's silly. Programmers are not produced by the language. Bad programmers are bad because they are lazy or dumb or inexperienced, not because they use garbage_collected_language_001. -- ilyas \_ you said you are looking for someone who loves coding instead of money, does that mean the position will be less than $80K? There's always a balance between love and bread. \_ the salary is competitive. -brian \_ anytime they ask for "lots of passion/$" they're implying that they want new, clueless fresh out of college grads who have no idea what they're worth so that they can pay very little for the biggest bang/bucks. Been there, done that, and places like this are usually managed by lame management. In fact, screw the passion. No matter how interesting/challenging the job is and no matter how much passion you have, the job will get boring after 4-5 years. The sooner you realize this the better off you'll be. \_ agree 100%. Been there done that and still there! No matter how productive I am, how much I have offerred, no a sign of appreciation, still counting my clocks. So I'm also counting clocks. \_ Yep. Hey kids, work your ass off for 12 hour days because you believe in the company! We're all a happy family, work hard but just play harder! Here kid, do this tedious shit that nobody else wants to deal with, you'll learn a lot! Oh hey kid we have to lay you off now, bye. |
2004/5/11 [Computer/SW/Languages/C_Cplusplus] UID:30157 Activity:high |
5/10 Can I create arbitrary blocks of code in C without control structures? I really just want something I can "break" out of. GetLock(myLock); { rc = SomeLibraryCall(); if (rc < 0) break; // breaks to release lock rc = SecondLibraryCall(); if (rc < 0) break; printf("Success\n"); } ReleaseLock(myLock); return rc; Furthermore, is this advisable, or is there a better way to do it? \_ Yes, you can create arbitrary blocks. No, you can't break out of them; "break" is allowed only within loop and switch blocks. Use a goto if you must, or maybe even a do { ... } while(0) if you feel strongly against gotos. In your example though, I'd just use if/else. --jameslin \_ As jameslin said, but here's the solution: int SomeFunction(void) { ... GetLock(myLock); int rc = SomeLibraryCall(); if (rc >= 0) { rc = SecondLibraryCall(); if (rc >= 0) { printf("Success\n"); } } ReleaseLock(myLock); return rc; } \_ Thanks both, but the problem is that it's not just SecondLibraryCall, it's NinthLibraryCall and it's getting ugly. I think I'll use a goto ERROR sort of setup in the future. \_ How's this: int SomeFunction(void) { ... GetLock(myLock); while (1) { int rc = LibraryCall1(); if (rc < 0) break; rc = LibraryCall2(); if (rc < 0) break; ... printf("Success\n"); break; } ReleaseLock(myLock); return rc; } \_ I'd rather not use a loop, even a fake one, because it implies ... well, a loop. Same with the do / while above. I guess I'm looking for a try { ... } block, but it's gotta be C. \_ what's wrong with implying a loop? Use the tools the language gives you. If you're so concerned use "for (i=0;i==0;i++)". \_ Totally correct. How's this: int SomeFunction(void) { ... GetLock(myLock); int rc; if ( (rc = LibraryCall1()) >= 0 && (rc = LibraryCall2()) >= 0 && (rc = LibraryCall3()) >= 0 ... ) { printf("Success\n"); } ReleaseLock(myLock); return rc; } \_ guys guys guy, you realize that gotos are allowed in C right? \_ ob GotoConsideredHarmful \_ This is where goto is the best solution. |
2004/5/11-12 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:30151 Activity:low |
5/10 On a 32 bit architecture, if I declare something boolean or byte, does it still use 32 bits, or is it possible to have a different offset for the alignment to pack it more efficiently? ok thx. \_ For boolean, it's all up to your compiler. For byte, most likely it's 8 bits, but it's still up to your compiler. \_ I heard that if the alignment isn't 32, either the arch would raise an off-alignment exception, or that there is a tremendous run-time penalty for the memory access. Is this true, and which architectures would this apply to? \_ memory alignment has nothing to do with this, since you're presumably not trying to load a 32 bit word from an arbitrary offset. if bool is implemented as a char, then typically it's 8 bits and alignment doesn't matter. x86 allows loading words from arbitrary offsets, but there can be a significant performance hit, whereas many mips style chips just do not allow it. \_ To clarify this: the 32-bit alignment the previous poster was worried about is only for 32-bit data values. If you have an 8-bit piece of data, it only needs 8-bit alignment. \_ The OpenBSD guys were saying that Sparc64 was their preferred dev/testing arch b/c it has strict memory alignment requirements; i386 less so. \_ On i386 or above, if you use 32-bits and it's not 32-bit aligned, there is a performance penalty but no exception. If you use 8 bits, I think for some instructions there is a performance penalty just from using 8 bits instead of 32 bits (excpet on the SX-variant processors.) However, I think there is no additional performance penalty if the 8-bit datum is not 32-bit aligned. \_ Do you mean 'bool' and 'char' in C++? Or some other language? |
2004/5/10 [Computer/SW/Languages/C_Cplusplus] UID:30126 Activity:low |
5/10 How do I make emacs search currently highlighted words in current document? like f3 (or was it ctrl-f3) in windows? thx \_ there isn't a functionality exactly identical to that, but here are two ways to do similar things: 1) place cursor at the start of the word(s) you want to search for. press C-s, and repeat C-w until the selection includes all the words you want to search for. then press C-s until you find what you want. 2) highlight the term you want. press C-s, then M-y (or Esc-y). press C-s until you find what you want. \_ Also, please do "M-x describe-key C-s" to see other neat things you can do with C-s. And C-r is for searching backward. \_ THX!! |
2004/5/6 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:30054 Activity:moderate |
5/6 I'm trying to use "#define errno WSAGetLastError()" in a winsock file, but the compiler says errno is already #def'ed. I can't just run cpp on the file--it's a crappy ide-based compiler--so I'd like to do something like printf("errno"), but of course that just prints "errno" instead of the preprocessor's notion of what errno is #def'ed to. What should I do instead? \_ errno is already defined because it's part of the c-library. Do One of the following: call perror() : This will print an error description to stderr use strerror(errno) to get the error string and print it however you want use strerror_r(errno, mybuffer, mybuffer_length) to put the error string into your buffer mybuffer \_ Sorry, should have explained myself a bit more-- this is a socket protocol wrapper file that's compiled into windows, unix, cygwin, and vxworks objects. I'm doing a lot of rc = select(...); if (rc && EWOULDBLOCK == errno) { /* handle blocking error */ so I really need the #def to work correctly. I could just undef errno for winsock and then re-#define it, but I'd like to know what it evaluates to first. \_ Many compilers allow you to compile only the preprocessor step. For instance, with Visual C++ 6 you can add "/E" to the compile options and you'll get the preprocessor output in the build window (and .plg file). \_ May I ask why you need to alias WSAGetLastError() to the preexisting #define errno? Why not use a different label? \_ Every library except winsock uses errno to report the error, so it seemed relatively natural to keep it consistent. I guess I could use MY_FOO_ERROR instead, but that would require a #else to the #ifdef _WINSOCK_H. Also, I'm kinda curious how to print the evaluated macro at runtime. \_ if you really wanted, you could #undef errno first. I don't see what using a crappy IDE-based compiler has to do with anything; it doesn't stop you from running cpp. Anyhow, if you want to see what errno is #define'd to, see this: http://www.eskimo.com/~scs/C-faq/q11.17.html --jameslin \_ Thanks, this is exactly it. Errno was #def'ed to *_GetErrno() and I didn't want to #undef it if it was already "magically" set to WSAGetLastError by <winsock.h>. Also, running cpp on the file says that errno was #def'ed to *__errno(). |
2004/4/30-5/1 [Computer/SW/Compilers, Computer/SW/Languages/C_Cplusplus] UID:13508 Activity:moderate |
4/30 Quick C++ question. In Meyer's More Effective C++, Item 22, he has a snippet of code like this: template<class T> const T operator+(const T& lhs, const T& rhs) { return T(lhs) += rhs; } My question is, why is it legal to do 'T(lhs) += rhs;'? T(lhs) yields a temporary, which is AFAIK, an rvalue, so since operator+= is not a const member function, the compiler shouldn't allow that line. My reading of the C++ standard seems to support my line of thought. But OTOH, g++ 3.4.0 happily accepts code similar to the above. So am I missing something here? Thanks. \_ T(lhs) is calling the copy constructor, which returns an object; I don't think it counts as a temporary. Not sure though. \_ No, T(lhs) is the functional cast expression, which may call a constructor (but not the copy constructor). Section 5.2.3/1 of the standard says that T(lhs) (that is, a type followed by parens and a single argument) is equivalent to (T)lhs. 5.4/1 then says that (T)lhs for a REFERENCE type is an lvalue, but for a non-reference type it's an rvalue. -emarkp \_ I agree with what you say, except for the part where you say a copy constructor can't be called. That's illogical, and I don't see where the standard says anything about that anyway. \_ Well, that's the only part that isn't clearly in the standard, so I'm glad you agree with the rest. :) Anyway, the standard says that: T(x) is equivalent to (T)x, which any compiler will turn into a noop if the type of x is T. I guess one exception for this would be if the type of x is T const. In which case I guess it would call the copy constructor if T is not a reference type. T *is* a reference type in the example though. -emarkp \_ Oops, my bad. Yeah, this would call the copy constructor (what was I thinking?) because of course lhs can't be modified, but since lhs is a reference type the copied object is an lvalue. I'm sure this is one of the screwy type rules that was made precisely for operator overloading. Sorry for the screwup. -emarkp \_ Hmm, I don't think so. lhs may be of reference type, but T(lhs), which is the same as (T)lhs, is of type T, which is not necessarily a ref type. -op \_ Okay, section 3.10/10: An lvalue for an object is necessary in order to modify the object except that an rvalue of class type can also be used to modify its referent under certain circumstances. [Example: a member function called for an object (9.3) can modify the object.] So it *is* being copied, and it *is* an rvalue, but non-const member functions can modify an rvalue of class type. -emarkp \_ That's nasty, but thanks! -op \_ Ob: And this is why C++ sucks. \_ I agree it is often way too complex, but it has its moments. -op \_ Ironically, the reason this is so complex is so that it will work like you expect, or in a way that a compiler can optimize well. \_ Disagree. At a certain point of complexity it's no longer economical to expect anything. All of this would be irrelevant with T.add(lhs, rhs). \_ Are you arguing against overloaded operators? In your expression, where does the sum go? \_ It's returned as an instance of of T. I'm not being a smartass here, I'm just wondering about cases where operator overloading saves anything more than a few characters of function name. What's the real win? \_ Operator overloading is essential to having user-defined types that don't feel like second-class citizens. "Smart pointers" would be syntactically ugly and cumbersome to use if you couldn't overload pointer-ish operations, for example. I'm sure there are lots more examples when you start using c++ as more than just "a better C". \_ To whoever asked why ocaml syntax is so warty -- in part because ocaml has no operator overloading. I sometimes wish it was there, but I am not holding my breath. The ocaml way \_ Perl. is that the operator can only be the same if the underlying algorithm is the same (so for instance they have +. for floats and + for ints, but < for both floats and ints). So they have 'polymorphism' instead of 'overloading'. -- ilyas |
2004/4/30-5/1 [Computer/SW/Languages/C_Cplusplus] UID:13494 Activity:nil |
4/30 C-50 (w/ help from Cl): http://www.newscientist.com/news/news.jsp?id=ns99994942 |
2004/4/28 [Computer/SW/Languages/C_Cplusplus] UID:13422 Activity:high |
4/28 I use astyle to indent my C code, but on some files it chokes and starts indenting some 13 spaces (instead of 3) at some point down in the file, usually write below the function definition. I can't find anything that looks odd about the function or the code above/below it. Any ideas as to what is going on? tia. \_ 4 spaces is the standard! \_ To answer my own post, the function was "int returnStatus(char *buf)" Changing it to rturnStatus (temporarily) fixed things... I guess it saw the "return" part as a keyword. |
2004/4/21 [Computer/SW/Languages/C_Cplusplus] UID:13308 Activity:nil |
4/21 In programming speak we call a # a hash and a ! a bang. Is there a jargon name for ~? \_ tilde. \_ seconded \_ squiggle \_ twiddle? \_ I concurr. \_ I tend to call "#" a pound. \_ more discriminating people have tended to call this 'sharp', e.g. in K&R. pound is for phones. \_ Maybe, but #! being called sharp-bang seems odd. \_ not really. #! is called shebang, which would seem to be a shortening of sharp-bang. \_ Far more often referred to as "hash-bang", shortened to "'sh-bang." Let's not reference Mr. Hung any more than necessary. And, btw, the only appropriate place it's called a "sharp" is in music... Fuck C# --scotsman \_ I agree that # is properly called hash. I hate calling it a pound, that's for British currency. \_ Jargon File says: shebang: "The character sequence #! that frequently begins executable shell scripts under Unix. Probably derived from "shell bang"..." In any case, like I said, I think K&R calls it a sharp, and I sure wouldn't trust your judgment over K&R's. Also, I don't care for your "Fuck C#" justification at all -- you sound like a tool. \_ Wasn't the original name 'octothorp' coined by the bell folks? -saarp \_ Surely something so obtuse could only have come from IBM? \_ what's @ called? \_ yomama \_ at. \_ In Korean it's called a "snail." \_ it's an onion \_ cinnamon roll \_ What do you call a "*"? \_ star \_ Splat. \_ That's what I call it too, but only Berkeley people seem to use this. |
2004/4/20 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Java] UID:13283 Activity:nil |
4/20 How does on change the indention level for Java Mode in emacs? I understand the C variable is c-basic-offset, but what's the Java variable? (Hint: It's not java-basic-offset) Help? \_ Dude this has been posted like, the 10th time this year. http://csua.com/?entry=12982 Use the force, just f****** search!!! \_ Wow, you're a freaking genius. That tells me exactly how to NOT do what I want. THANKS! \_ dumbass, the fine print says: "do 'info ccmode' and look at t\ he section on hooks." \_ the following works for me, maybe you can try it: (setq java-mode-hook (setq c-indent-level 4 default-tab-width 4 c-basic-offset 4 indent-tabs-mode nil ) ) |
2004/4/16-17 [Computer/SW/Languages/C_Cplusplus] UID:13241 Activity:nil |
4/16 What C++ programs out there (with source code freely available) do you guys think are particularly well-written, elegant, etc.? That is, what would you read to improve your understanding of what constitutes good C++ code? Thanks. \_ Anything not written by M$. \_ LEDA \_ the source doesn't seem to be freely available for that one. at least, not if those hoops i see over there are for jumping through. |
2004/4/14-15 [Computer/SW/Languages/C_Cplusplus] UID:13199 Activity:nil |
4/14 What are the industry trends towards Java jobs? What about C/C++ jobs? \_ India |
2004/4/13-14 [Computer/SW/Languages/C_Cplusplus] UID:13175 Activity:high |
4/13 How much C++/C knowledge do recent Berkeley CS/EECS grad have? \_ Class CSGrad inherits FromDaddy and does not implement C++Knowledge very well. \_ funny. just the rich and poor as always. the middle class can't afford education. \_ They know how to deal with pointers and addresses, malloc and free. They also know OO. Understanding the intricacies of how C++ bridges those two worlds is up to the individual, and probably picked up fairly quickly. \_ "Nobody understands C++." C++ is big enough that it swallows other languages (for instance it has a small functional language completely embedded in the template syntax alone). -- ilyas \_ This is just plain silly. C++ has esoterica and dark corners, but the vast bulk of it is easily understood with some effort and training. \_ 'Easily.' It will take you many years to write efficient, maintainable C++ code. It will take many more years to be a 'guru'. I am not sure any one person understands all of C++. I will grant you that the 'java subset' of C++ is easy enough. Even an 'easier' language like java has some things that give even experienced people pause (anonymous inner classes, etc). -- ilyas \_ written by someone who apparently doesn't know much c++. the real intricacies of c++ are not picked up fairly quickly, which is one of the major issues people have with it. it is big, and hard (no porno comments, please). to answer the op though, as a recent grad, i claim that the vast majority of berkeley eecs/cs people have a pretty shallow knowledge of c or c++, partly because almost all the classes have a java option now. \_ Well put it this way: it's pretty easy to pick up a few simple rules that reduce C++ to a simple(r) productive language. \_ which still isn't C++. \_ Um, no, they don't know how to deal with pointers, addresses, malloc or free. Most *typical* Berkeley CS grads in the last three or four years couldn't tell their ass from a pointer and stare blankly at you if you say ``memory management.'' A lot of nonsense goes on in the CSUA, but I will say that most recent grads who kicked around a little with the CSUA have at least an acceptable level of understanding of C, and some may show passable C++ knowledge. -dans \_ Mostly correct I'm afraid. I learned C++ through my research, not my classes, and I would barely classify my knowledge as passable. (We used a garbage collector, I felt like I was cheating) \_ not as well as they used to say 5-8 years ago. but given that the department always says "we're not here to teach you languages, you're supposed to pick them up on your own," things could be worse. |
2004/4/6 [Computer/SW/Languages/C_Cplusplus, Academia/Berkeley/CSUA/Motd] UID:13031 Activity:nil |
4/5 Dude, can you guys PLEASE PLEASE wait 12 hours before deleting a helpful message (relating to tech/computer/sysadm/etc)? Thank you. \_ fuck you. when people delete politics, tech stuff gets deleted. \_ You pathetic baboon, what does deleting political crap have to do with someone nicely asking that informative tech posts be kept? Grow up. -John \_ John, stop deleting stuff, and stop using racial slurs \_ neither should get *censored* but it seems to be a very simple lesson in tit for tat. some people want the motd to be techie-only and censor things they don't care about. they don't listen to those who have asked for years to not do that so you're now seeing the response of frustrated last resort. the lesson is something your mother should have taught you by age 5: treat others as you'd have them treat you. there's nothing sacred about techie posts. \_ Wait, take this example: Person A Makes a technical post. Person B makes a political post. Person C delete's B's post. You're saying it makes sense for B to delete A's post? That sounds like completely ineffective collective punishment. \_ Yes, it does. It punishes C who wanted to keep A. \_ in other words, the trolls get pissed when their attempts at making the MOTD useless by inciting stupid arguments fail, so they go straight to deleting the useful content. \_ this line of reasoning is exactly the problem here. you think the motd is only for "useful" (to you) threads on topics of interest (to you) and anything else is a troll which makes the motd useless. when you get over it and finally understand the motd is a public space for everyone, it'll be more useful for everyone. tit for tat is a very simple concept you should have learned in grade school. everyone loses. so stop deleting the topics that are obviously not trolls and are of great interest to others and yours will stick around longer too. if we measured value by number of replies, length of replies, effort spent in replying, and number of people involved in each thread, it can be easily argued that the motd is primarily for political topics with a secondary function for google-able techie questions and a few job postings. \_ Anything can be argued. Anyone arguing that the MOTD is a good place for political topics would sound like a complete idiot, but he certainly could argue it. \_ Score another ad hominen. Got anything to say? \_ and destruction begets more destruction. brillant. \_ and you would delete everything else? \_ ln -s /etc/motd.public /dev/null \_ Permission denied, can someone with root do it please? |
2004/3/27-28 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Python] UID:12891 Activity:moderate |
3/27 Funny argument involving code, recursion, and a foxtrot comic: http://www.pantsfactory.org/?action=comments&linkid=1260 \_ somehow that thread neglects to provide a link to the 1.0.1 patch: \_ somehow that thread neglects to provide a link to the patch: http://homepage.mac.com/billamend/images/patch.gif |
2004/3/25-26 [Computer/SW/Languages/C_Cplusplus] UID:12861 Activity:nil |
3/25 Please confirm: int foo(void) { static char *str = (char*) malloc(10000 * sizeof(char)); ... } malloc will only be called once, correct? \_ It will be called everytime the function is called. You may want to look at __attribute__((constructor)) if you are using gcc. \_ Uh, if it were evaluated every time the function is called, the "static" keyword would be totally useless. To the OP, if you're using ANSI C, that's not a legal construct. Static variables are equivalent to global variables with restricted scope, so you can't initialize them to non-constant values. It's fine in C++; C++ initializes static variables at run-time. If you're using C++, though, you probably ought to use new instead of malloc, or there are probably better ways to do whatever it is you want to do. \_ you easily can test this by replacing the malloc call with printf/cout/whatever. |
2004/3/19-20 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl] UID:12756 Activity:nil |
3/19 When I do substr($string, x, 1) eq "c" in Perl, is it smart enough to do (string[0]=='c') in lower level, or is it dumb to do it like strcmp(string, "c")==0? In another word how much optimization does Perl perform? I'm asking because performance is an issue but I don't want to use C. ok thx \_ umm...why do you think strcmp(string, "c") would be so slow? oh, right, because you're an idiot. \_ Profile your code. You will almost certainly be surprised to learn where the real slowdown is. -- ilyas \_ it won't be in this trivial string comparison, that's for sure. \_ Indeed not. -- ilyas \_ makes me wonder what they're teaching in Berkeley CS these days.... \_ Use C or another REAL programming language. |
2004/3/15-16 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl] UID:12666 Activity:low |
3/14 Is there a function that takes a string and then escape all spaces and control chars in it and return a string suitable for use as say a filename in a shell? tia. \_ "function" in what, c, the shell, ...? \_ in some more or less widely available library of C functions? \_ Something like perl's quotemeta? --scotsman \_ No. But if you want to look at an example look in openbsd's ksh. IIRC, the function is called x_escape and is in edit.c. \_ Thanks. One would have thought something has useful as this should make it way to some standard lib. Not that it is that difficult, but why reinvent the wheel or copy other's work? |
2004/3/12-13 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Misc] UID:12645 Activity:nil |
3/12 Iway'may eryvay eryvay impressedway atway owhay icklyquay ethay otdmay ormattingfay odgay ormatsfay may intentionallyway illway ormedfay ostspay. Iway'may onderingway ifway itway'say actuallyway away onedcray ormattingfay iptscray orway omethingsay, andway ifway osay, ancay youay easeplay ostpay ethay iptscray? anksThay \_ It's no script. \_ That's no moon. \_ Why do YOU care? \_ Wow, motdedit fixed up my post pretty funny. This was supposed to be on the Jessica Lynch post, but someone deleted it. I can't say it's any less applicable here though... \_ The motd formatting devil was here \_ I'm pretty sure there is no script as this is a pretty complicated problem (context sensitive flow analysis with statistical inference, etc). However, I do think that whoever does the formatting is equivalent a very complicated finite state automaton that runs in an infinite while loop. \_ it's not that hard. parse the motd looking for a newline followed by a number to get the start of a post, then anytime you see a "\_" or "\-" preceeded by tabs or spaces you get a change in authorship. the actual reformat is trivial. FUCK its hard because there are so many corner cases. For _| U example, suppose I interrupt your line in the middle, then C your parser will get fooled. The other example is if I K start posting in ascii pictures. Then what if I jive your F content? And what if the indentation IS indeed unusual like a C/Java code? ANd what if I use letters I_ to indicate a response? And the list goes on and on, but the point is, it's very easy for the naked eye to catch infinite weird cases, but putting them into smart/self-learning generic rules is just as hard as writing spamassassin. \_ Corner cases? fuck em, its the motd. this isn't one of hilfinger's courses. \_ I am Gunnery Seargent Hartman, your Senior Drill Instructor. From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!" DO YOU MAGGOTS UNDERSTAND THAT?! \_ SIR YES SIR!!!!!!!!!!!!! |
2004/3/11-12 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Misc] UID:12613 Activity:moderate |
3/10 Teach yourself programming in 10 years: http://norvig.com/21-days.html \_ "Learn at least a half dozen programming languages" Why? What is the point of knowing a bunch of languages when the only language that is of any real use is C? \_ Assuming this is not a troll I'll just throw in that I know more than a couple of people who have been slow to get re- absorbed into the employment pool because they could not claim to be experienced and proficient in more than one language. As an outside observer, it really looked to me like they should have been augmenting C with Java or J2EE with C++ and so on... -- not a cs professional \_ Did you study CS at Berkeley? If you want to get any real work done, you ought to use high-level languages. \_ if you want any real job you need to know more than 1 lang. \_ I didn't study CS (I was an eng.) I'm not sure what you characterize as real work, but I've worked on device drivers, custom embedded oses and encryption protocols; all in C. \_ "Hydrological _and_ hydrodynamical! Talk about \_ "Hydrological _and_ hydroelectrical! Talk about running the gamut." -- ilyas (though the credit has to go to Sideshow Bob) \_ The first mention of my profession on the motd, ever! Well, actually I kind of gave up on hydrology. -- ulysses \_ Because really learning another language means learning what its strengths are and understanding why those are strengths. \_ It's better to learn new languages naturally as the need arises. \_ I don't know why I bought all those tools when the only \_ BAM! tool of any real use is the hammer. |
2004/2/25-26 [Computer/SW/Languages/C_Cplusplus] UID:12407 Activity:nil |
2/24 Another (more focused) script question- what's the best language to quickly wrap a (1) C library (eg, socket manager) (2) C++ class? Does (2) get any easier if I use non-virtual methods? \_ python |
2004/2/10-11 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Java] UID:12201 Activity:kinda low |
2/10 What is the equivalent of "protected static int COUNTER=0" in C++? Either protected or private would be ok. Thanks! class foo { protected: static int COUNTER; }; in foo.cpp int foo::COUNTER = 0; |
2004/1/30 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Functional] UID:12020 Activity:nil |
1/29 Anyone know what strpbrk (the c library function) stands for? \_ http://tinyurl.com/2bupw (developer.apple.com) \_ He's not asking for the manpage; what does the pbrk part mean? \_ probably STRing Pointer BReaK, if someone has the ISO C 89 standard they could look it up. \_ that's the obvious guess, but if you think about it, it doesn't really...say anything. btw, i have a copy of the c standard, and what it means is not mentioned. it's also a strange name compared to say, strchr/strrchr, which perform pretty similar functions, just on a single character. -op \_ from the book: char *strpbrk(cs,ct) return pointer to first occurrence in string cs of any character of string ct or NULL if none are present. \_ You're not answering the question either. The question is about etymology. Anyway, this is the sort of thing that probably should be asked on comp.lang.c. \- it means "in a STRing return P pointer to the first BReaK character". you may wish to google for say "lisp scheme skip-until parser break" --psb \_ From the BSD manpages it says : "strpbrk - locate multiple characters in string" From this I'm guessing you could use it to locate things like "\n\t" which would be a STRing Paragraph BReaK. |
2004/1/21 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:11861 Activity:nil |
1/20 Any candidates for the best way to prevent developers from #includeing a header file accidentally. Aside from very loud comments to that effect, what is a good way to make the compiler complain? I was thinking something like #ifndef MYLIB_I_REALLY_WANT_TO_USE_THE_PRIVATE_INTERFACE // best way to cause compiler pain goes here #endif at the top of the private header file. This has to be straight C for various reasons (I do prefer C++ and Java). \_ #include Your_error_message_here \_ Cannot find file Your_error_message_here \_ If you want to raise a preprocessor error, there's a mechanism for that: it's called #error. #error Don't include this file. Anyhow, if you want to restrict access to, say, structure internals, you can do: #ifdef MYLIB_I_REALLY_WANT_TO_USE_THE_PRIVATE_INTERFACE struct st { int field; }; #else struct st { }; #endif \_ Document your code and fire any developers who ignore specs. If they're ignoring something this major, they will hose your source even worse somewhere else. |
2004/1/15-16 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages] UID:11792 Activity:nil |
1/14 Is there an enscript-esque tool for Win32 with a GUI? I want to print source code including highlighting, formatting, etc. Thanks. \_ Eclipse does a pretty good job of this, but it's a full featured IDE \_ UltraEdit too. \_ PrintFile32 -- it allows you to specify keywords for a language if it's not in the code. Works great for C-like languages (I haven't really used it for other language families). http://www.lerup.com/printfile \_ the most lightweight is probably TextEdit \_ Thanks for the suggestions! -op \_ Civility on the motd!?! Begone! |
2003/12/15 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:11455 Activity:low |
12/14 Sorry about this, but about alternative to the Dragon Book in the subject of Compiler. What is the name of the author for that Programming Language book again? \_ the Tiger Book by appel- a much better read. \_ Michael Scott. Here's the Amazon link if you want to read some reviews: http://tinyurl.com/z9rx \_ thanks some reviews. |
2003/12/12-13 [Computer/SW/Languages/C_Cplusplus] UID:11439 Activity:low |
12/12 Is there a good book on using C++ for large software projects? I suspect making this required reading for engineers will reduce likelihood of C++ code-bloat / vaporware problems. \_ Weak troll, or weak manager brain? I am not sure which I prefer. |
2003/12/12-13 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:11427 Activity:nil |
12/11 Is there something like __FILE__ or __LINE__ macro that will give me the class / method name in C++? \_ it can't be a macro, because the preprocessor doesn't know anything about classes or functions. \_ __FUNCTION__, __PRETTY_FUNCTION__ in gcc, __func__ in C99 \_ gcc 2.95.4 on soda accepts __func__ too. |
2003/12/11-12 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:11404 Activity:moderate |
12/10 I am not a programmer so this question may be stupid. What does @"A string (might be empty)" mean in a gcc? \_ The '@' character has no meaning other than '@' in standard C. Look at the documentation for your nonstandard compiler. \_ What's the meaning of '@' in standard C? I have no C book near me and I can't find it in the documentation either. \_ It isn't standard C syntax. If you post a code snippet with a usage example maybe we can guess what it is. \_ Sorry I wasn't clear. The '@' is not an operator, token, etc. It's just another character, like '1' or '8' or '\' and has no special meaning at all. However, it *does* have a special meaning in C#. Specifically it means a verbatim string literal. See: http://www.softsteel.co.uk/tutorials/cSharp/lesson4.html#3 \_ Please give more context. Otherwise it looks like the program may be run through a custom pre-processor (@ is expanded to something else) before being passed to gcc. \_ What's the source language? Objective-C? \_ I think @ means something in Objective-C... unicode string maybe? \_ Apparently an "NSString" object: http://csua.org/u/58b \_ It means several things in ObjC. @"..." is a way to create an NSString literal, but it's used in other places, e.g., @class to predeclare a class name, @interface ... @end is how you declare a class, etc. \_ Thanks. Now I realize that the version of documentation stored on my computer is outdated. It does not define the @"string" directive even though it is is already in use by then. Actually it is still not in the grammar section of the current documentation as far as I see. http://tinyurl.com/ytlp (developer.apple.com) \_ What variant of C are you using exactly? \_ I am reading some Objective C codes for Mac. As there is no standard whatsoever for Objective C, I should really say codes for the gcc compiler that comes with OS X. I am confused why this compiler can be called gcc: NSString is part of Cocoa, which is not GPL or open source. \_ NSString is part of GNUStep which is open src: http://tinyurl.com/ytlw (gnustep.us) Also there are some "standards" docs for the language: http://pages.cpsc.ucalgary.ca/~burrellm/objc/objc.pdf \_ It probably should be listed in the grammar, but you will find it here: http://csua.org/u/58h This static string syntax, I believe, is an ObjC thing, and not an Apple extension (GNUStep as far as I see. docs refer to it too), but I couldn't test it it out on soda, as I couldn't find the Foundation header files. http://csua.org/u/58i |
2003/12/10-11 [Computer/SW/Languages/C_Cplusplus] UID:29701 Activity:high |
12/10 No, seriously-- I really need a code formatter for C++. \_ http://www.google.com/search?q=C%2B%2B+code+formatter \_ How much formatting do you want? Just indent? Or do you want to parse the lex the code and rearrange {}'s ()'s whitespace, etc.? \_ indent chokes on c++ \_ you didn't even answer the guy's question; why should anyone answer yours? \_ Hey dumbass, I wasn't talking about /usr/bin/indent, I was talking about indenting in general. \_ http://sourceforge.net/projects/astyle \_ How does Java style differ from K&R? |
2003/12/8-9 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:11359 Activity:low |
12/7 Is there any reason to use bzero over memset(foo, 0, sizeof(foo))? \_ ANSI! ANSI! is the STANDARD! C runtime library. (use memset instead) \_ Is ANSI the standard or is K&R (in the K&R C book) the standard? I've always been using the K&R book as reference when I want to write portable code. \_ K&R 2nd edition has a big "ANSI C" label on the cover. I think "K&R C" refers to K&R 1st edition. \_ On some systems bzero used to have an optimized assembler implementation. If you are not concerned with speed, stick to memset() since it is part of C89. \_ Wouldn't those systems also have a quick compiler check to call the assembly when the second arg was 0? |
2003/12/8-9 [Computer/SW/Languages/C_Cplusplus] UID:11356 Activity:nil |
12/8 c++ question, how do I overload << in my class so it will handle endl? ie: myclass << "some string" << endl I know how to do the "some string" part: myclass & operator << (const char * s); what about endl? Thanks!! \_ I thought endl was just a regular char* too. \_ what self-respecting c++ programmer doesn't have a copy of stroustrup available? it's in there. \_ Don't know about you, but the stroustrup text blows chunks. It is nowhere close to being something like K&R. The text I usually refer to (but no doubt is incomplete, but hey, that's what you get with a badly designed kludge of a language) is the Lippman text we used in CS61B. I rarely have to use anything arcane like overloading operators, and I think \_ overloading operators is fine if it's not done stupidly. C = A + B has a very well-defined and clear meaning if A, B, C are square matrices of size N, for example. Overloading + to do a matrix multiply would be a stupid overload. that most of the OO baggage of C++ is unnecessary. Not only that, it seems like popular APIs (i.e. kde, mfc) promote things like OO very inconsistently. \_ while i agree that c++ is pretty kludgy in many cases, if you think operator overloading is "arcane", you must not know c++ very well at all. do you prefer stuff like a.add(b).multiply(c).divide(d)? and that's just for nice short variable names. operator overloading is pretty cool, and even guy steele thinks java will need it as it matures. \_ uhg, is all berkeley cs lost? (/ (* (+ a b) c) d) ;-) \_ if you need to do things like add multiply and divide, sure it makes sense... but how often do you need those constructs? the Matrix example above was a good example. \_ endl is a manipulator, not a string constant. In addition to ending the line, it flushes the buffer. |
2003/12/4-5 [Computer/SW/Languages/C_Cplusplus] UID:11317 Activity:nil |
12/4 Is there any reason to worry about mixing the usage of malloc and new? Obviously, you can't delete() malloc'd memory (and vv), but aside from that, will bad things happen? Oh, I should note that this is for a C library that is used by C++ -- a coworker suggested wrapping my memory allocations (and deletions) with #ifdef __cplusplus foo = new char[100]; #else foo = (char*) malloc(100 * sizeof(char)); #endif \_ as long as you call free only on malloc-allocated memory and delete only on new-allocated memory, you should be fine. If it were the case otherwise, then you wouldn't be able to link C++ code against C code. |
2003/12/4-5 [Computer/SW/Languages/C_Cplusplus] UID:11316 Activity:nil |
12/4 Is there a way to do a c/c++ log macro/function so that in the log message it will automatically output the filename/function name or something of that sort? \_ One (bad) attempt, just to give you an idea: #define LOGMSG logMsg(__FILE__, __LINE__, int logMsg(char *fname, int line, char *msgfmt, ...) { char msg[512]; va_list vl; va_start(vl, msgfmt); vsprintf(msg, msgfmt, vl); va_end(vl); printf("%s:%d : %s", fname, line, msg); return 0; } Macros don't allow varargs, so your uses of this macro are going to \_ http://docs.freebsd.org/info/gcc/gcc.info.Macro_Varargs.html \_ that's almost as cool as the shirt folding thing. Thanks. look like LOG_MSG "This is error number %d\n", foo); ^ note missing "(" The macro will expand this to logMsg(__FILE__, __LINE__, "This is error number %d\n", foo); and your log msg will look like: myfile.c:104 : This is error number 5 It would be a lot nicer if you could define some standard log formats, then you wouldn't have to do that horrible horrible macro stuff. \_ You should use log4cplus. I use it and it's fairly easy to configure. |
2003/11/21 [Computer/SW/Languages/C_Cplusplus] UID:29654 Activity:high |
11/20 I have a couple binaries (foo, bar) that I need to call from a C program, and I need to get their exit codes. If I use system("foo") I'll get the return code of the shell that executed foo, so that's out. What's the best way to pass back this single int of status info? \_ What OS? \_ What OS? -_ Unix \_ use exec() instead. \_ How do I get back to the context of my C program? Exec never returns. \_ fork first |
2003/11/6 [Computer/SW/Languages/C_Cplusplus] UID:10967 Activity:nil |
11/6 How do i get the local port number of a socket after it connects in c? (solaris). i am doing socket() followed by connect()... Thanks a lot!! \_ I believe you can check the sin_port field of the sockaddr_in structure after calling connect(). |
2003/10/20-21 [Computer/SW/Languages/C_Cplusplus, Computer/Networking] UID:10702 Activity:kinda low |
10/20 I need to design some sort of tcp socket system for responding to client commands (sent from a gui). The client will be sending text strings such as "set_foo_bar_baz=2340", but usually more complex. The server delegates the command to a specific function, which will respond with a potentially large (10Kb) response string. Is it possible to pass the socket descriptor to the command handler s.t. the handler can fprintf() to the socket? Is this advisable? TIA. \_ What's wrong with passing the socket descriptor and using send()? \_ print formatting, ease of use, etc. Also, it's a realtime system and we can only allocate memory at startup. \_ How can you have a realtime system rely on tcp? Are you sure it's a realtime system? -- ilyas \_ The socket code is running in a low priority task which talks to the RT task. I'm interested in the file descriptor solution because a dynamic malloc (even at low-pri) might be too slow... the alternative is a purely static buffer allocation, which I then pass into the command handlers... but formatted printing into a char array (sprintf; strcat) isn't quite as nice as fprintf. \_ I think the tcp latency will dominate any latency from a dynamic malloc. Mallocs aren't that slow, compared to a slow network. Unless of course, your tcp is local. Even in that case, the protocol makes no guarantees about delivery times, so it would be difficult to convince anyone your system is truly real time. -- ilyas \_ The RT data is coming in over the system bus; tcp is only used for command & control. I'm not experienced enough to actually know what's going on, but my mandate is that malloc is a no-no. At any rate, it looks like the static malloc decision has already been made. Thanks for your help though. \_ Must be Linux based. \_ http://members.cox.net/defiant_penguin/documents/basic-socket.html There, have phun. \_ I think phun is depreciated. \_ Really? Can I write it off on my taxes? Or do you really mean deprecated? \_ just read the link retard. |
2003/10/12-13 [Computer/SW/Languages/C_Cplusplus, Recreation/Shopping] UID:10601 Activity:nil |
10/11 My friend just asked me what "pegged pants" are. I couldn't find any good pictures on google. Any better googlers out there? This is as good as I could find: http://partyclothes.com/images/lilac_and_turq.jpg \_ Couldn't find pegged jeans, but this is pretty funny: http://www.inthe80s.com/clothes/p.shtml -John \_ Why don't you fold your jeans, roll them, and let him see for himself. If it helps, wear some reebok hightops (or vans w/ no socks) and a T&C Surf Designs shirt. If you really want a picture, please take one and post it on the web, I'd like to see it too. \_ I did this last weekend for an 80's party. HORRID. Utterly horrid. If I end up with any pictures of myself, I'll make sure to burn them. \_ Does anyone have a copy of "The Official Preppy Handbook". Quotes: "Blucher moccasins or Sperry Top-siders?", "whales or ducks?"... "to Lacoste or not to Lacoste and if so collar up or down?" |
2003/10/3-4 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Java] UID:10437 Activity:nil |
10/2 Java's cover: http://www.paulgraham.com/javacover.html \_ The sun internal memo is good reading as well. Lots of projects at sun (and elsewhere) that need to provide robust functionality in a small memory foot print have rejected java in favor of c or perl because of the reasons outlined in that memo. Java might have been a good idea but its implementation is terrible. \_ 99% of applications out there don't need a small memory footprint \_ The embedded market is huge. That's who they're talking about. \_ You would be surprised how many applications that run on general purpose hardware/os need to have a small memory footprint per instance (and/or thread). When you have to handle hundreds of simultaneous requests, something that takes 10 mb of memory to just stand up and another 50 or so to run (per instance) puts a huge burden on them system. I'm not even considering the io/cpu load that a java pgm places on the system. You can also forget about writing cli utilites with java, since the startup time for the vm is long. \_ 1. 60 megs is nothing these days. Really. My laptop has a gig of memory. Any server should have more. And java doesn't take that much memory on my system. And if you make the vm constantly resident (for such things as servlets) the startup time isn't an issue. Look I'm not saying Java is the One True programing language, I'm saying nothing is. Different tools for different jobs. Java is pretty good at what it does. And for the embeded market it has worked pretty well too. I for one think the whole language world is pretty stagnent right now and someone needs to create a c++ killer that, gives you total control over memory, enables you to be as fast as C if you need it, and isn't the ugly piece of shit c++ is. Hell maybe someone should stop trying to copy C syntax and typing and come up with something new that works. But until then I'll make do with what is out there and for some jobs Java works well, for some perl, and for other C++. \_ Out of curiosity, how many languages do you know? -- ilyas \_ I've done major projects with c/c++, perl, and java. I have played around with lots of others: python, smalltalk, ruby, eifle, ocaml, objective c, and others I've forgotten about. I'd love to do a serious project in any of those, but I've never had a reason to. And as I've said, I'd really like to see a good C replacement type language for doing stuff C/C++ should be used for (which sadly is a lot less than it IS used for.) \_ I am an ocaml fan. I think you can use ocaml for most stuff people use c++ for these days, except maybe some kinds of system work. I like lisp too. People think of lisp as slow, but it's not. -- ilyas |
2003/9/26-30 [Industry/Jobs, Computer/SW/Languages/C_Cplusplus] UID:10344 Activity:kinda low |
9/26 I am looking to hire several experienced C developers to work on a network security product and a financial (stock trading) application. If you or anyone you know is looking for a job please email a resume to rjchu@hightowersoftware.com \_ Wow. Is it an embedded product? Or a legacy one? Are you sure it's in C? on C? \_ It's gotta be .NET/C#/F# or Java \_ !C != .NET/C#/F# or Java \_ You're just jealous because you don't have 10+ years of \_ I have 15+ years of Java, C#, and .NET! \_ Do you have over 10 years of HTML? on C? \_ It's gotta be .NET/C#/F# or Java \_ !C != .NET/C#/F# or Java C# or .NET technologies and innovations on your resume. \_ yeah, it didn't even exists until 3 yrs ago \_ [ Someone discovering America by opening their window ] |
2003/9/26-28 [Computer/SW/Languages/C_Cplusplus] UID:10338 Activity:nil |
9/26 C question: if I have "static int alreadyRun = 0;" at the top of my function, will alreadyRun be set to 0 on every call, or merely the first call? Thanks. \_ The value is set once at program start time, along with the global variables. The value is not reset every function call, as that would defeat the purpose. \_ What about in C++? :-) \_ Not quite correct in C++ but I don't know if it's different from C in this respect. The variable is required to be initialized before the first time it's used, so if you don't ever call the function it might never be initialized. This isn't a major issue for an 'int' but it becomes very important with Singletons. \_ Funny. I wrote this response and when I tried to save it, I got a 'file has changed' warning. The above C++ question was added while I was writing this, and this time the C/C++ differences are important (at least for complex objects or constructors with side-effects). \_ If you have 10+ years of C/C++/Java please let me know. \_ Let who know? And why? |
2003/9/19-20 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:10257 Activity:nil |
9/19 I have something like this: unsigned char a; char b; unsigned short c; short d; if (a < 9999999) {} if (b < 9999999) {} if (c < 9999999) {} if (d < 9999999) {} When I compile this with gcc 2.8.1 on SunOS 5, it only complains "comparison is always 1" for b and d, but not a or c. Why? Thanks. \_ Perhaps in converting 99999999 to a signed char or signed short the compiler wraps the number around the max (i.e. takes it mod the max value) whereas for unsigned data types it saturates. Another possibility might have something to do with the fact that 99999999 is negative for signed char and signed short. -emin \_ I see. I just tried 65537 and I got the same result. Same for gcc 2.95.4 on soda also. \_ Try 65535. \_ Same result. But in this case, not complaining about the 'c' line makes sense because the comparison is not always 1. \_ from gcc 2.95.2 on sparc: % gcc -o foo foo.c foo.c: In function `main': foo.c:7: warning: comparison is always true due to limited range of data type foo.c:9: warning: comparison is always true due to limited range of data type try b < 127 and d < 32677 --jon \_ Arrr! \_ Avast! |
2003/9/18-19 [Computer/SW/Languages/Java, Computer/SW/Languages/C_Cplusplus] UID:10248 Activity:low |
9/18 I have an embedded C++ application that passes around a lot of 68-byte structs-- the struct is a wrapper around a binary message, and just about every function call includes one of them (usually passed by copy). Today I changed the struct into a class which contains an empty Constructor/Destructor, and Configure() method which initializes every field. Basically nothing else was changed: the 68-byte struct became a 72-byte object. No inheritance, no virtual functions, everything is allocated on the stack. My test suite is taking 300% longer to run, even with -O3. Any ideas about what might be causing this? I'm going to look into gprof, but if there are any hints and tips I'd like to hear them. Thanks. \_ WAG: From your description, I gather you changed the definition from: struct Foo { ... }; to: class Foo { ... }; Try changing "class" back to "struct" and see if that changes anything. \_ It does-- it cuts the running time by 2/3. I've got 2 parallel (except for the class stuff) directories and I'm running the tests side by side. \_ Well, are you passing these structs by value? Are you constructing and deconstructing tons and tons of classes now? Calling all those empty constructors and deconstructors can get quite expensive. Also do you have RTTI turned on? That could explain the extra bytes, \_ I don't have RTTI on explicitly (how would I check?), and I'm not using any template stuff. The compiler is gcc 3.2. Is there a way to optimize the (de|con)structor calls to nothing? I had figured that -O2 would take care of that for me. Also, I think that extra 4 bytes is just a pointer to the dispatch table, which is completely expected. --op \_ If you have no virtual functions you don't have a dispatch table, and you shouldn't have a pointer. Trust me when your basic math objects are classes and you have umpty millions of them, doubling the size for a dispatch pointer would be really annoying. \_ Aaah! You're totally right. Out of habit I had put "virtual ~Foo() { };". I removed the virtual and the code is now about 5-10% *faster* than the struct version. Thank you thank you thank you. \_ Two more suggestions: Did you define Configure() in the header file? If so, move it to the implementation file and see if that makes a difference. Also, try compiling with -Os, which optimizes for size (at least on my gcc). - struct guy \_ Configure is defined in the .cc file; I'll give -Os a shot now. \_ Try swapping the the definition of the ctor/dtor and Configure from .cc to .h or vice-versa. \_ Why did you change working code in the first place? That's where your real problem is. \_ Obviously so he could put C/C++ on his resume! |
2003/9/17 [Computer/SW/Languages/C_Cplusplus] UID:10218 Activity:nil |
9/16 I manage the Engineering Department at a software company in Southern California. We have openings for several senior level developers. C/C++ required, MFC and Qt experience a plus. Send resumes to rjchu@hightowersoftware.com - I'll be out of town this week and doing call backs next week based on the resumes I get. \_ There is no such thing as C/C++. Pick one or pick both. \_ C/C++ means you should know one or both. -!op \_ this guy never even has seen a job posting \_ I have. It annoys me when people say "C/C++" as if they're the same thing. It's marketing-speak. \_ No, you're being a nerd. The languages are close enough to not matter. They want someone with C/C++ as opposed to LISP or Fortran. You'd prefer you had 15+ years of C and no C++ and didn't get a call because they hired someone with no C and 2 years of C++? *That* would be stupid on their part. \_ c and c++ are, to program in, not very close at all. a more technical person probably wouldn't be caught dead saying 'c/c++', but i agree it's kind of silly to belabor this point. \_ It's a job posting. The candidate is supposed to be smart enough to be able to read a job posting without flipping out. Anyone bothered by a C/C++ listing so much is way too anal to work in most places. A job posting is just a vague wish list of 'stuff' they think might be nice for someone to know to some degree or another so candidates can self-disqualify. Stupid is when some marketing guy keeps applying to all of the perl and java jobs at my company. Zero programming experience and not much marketing but is applying for 3-5+ year experience required jobs. *That* is stupid. When we did open a marketing job he wasn't considered due to previous stupidity. \_ Yes, it would be stupid on their part, and it's irrelevant. If they don't care if it's C or C++, then just say, "C and/or C++". Is that so hard? And the languages aren't /that/ close; if you're writing C++ code that looks like C... well... <shudder> \_ You're still being nerdy. It's close enough for most places and a lot of people who know one also know the other. "C/C++" is just shorthand for your "C and/or C++". Just chill and put down the Strunk and White. I'm glad to see people posting real jobs here. You shouldn't abuse them for it. Don't bite the hand. \_ So if there's another job posting saying "Assembly/C required", are you going to complain that there's no such thing as Assembly/C too? If you think that manager is silly, don't apply. I don't complain about C/C++. I only complained about job postings saying "10yrs of NT programming required" back in 1998. \_ Qt = cutie? \_ it's from a company called trolltech. you'd like it, obviously \_ I don't think that's trolling, just a newbie |
2003/9/11-12 [Computer/SW/Languages/C_Cplusplus] UID:10155 Activity:nil |
9/11 I am looking for a program that can make a flow chart out of C code. Is there anything opensource, or does Borland or MS C coding environment have anything that could do this? \_ man cflow. See cflow run. Run cflow, run! |
2003/9/10 [Computer/SW/Languages/C_Cplusplus] UID:29529 Activity:nil |
9/10 Stupid question: how do I reference a C callback? int mycompare(void const *a, void const *b) { ... } qsort(msg, sizeof(Msg), numMsgs, mycompare); I get "Type error in argument 4 to `qsort'; calling convention mismatch." \_ There's nothing wrong in the you reference it. However, you should make the mycompare() prototype match exactly with what qsort() wants in its prototype. Exactly what it wants depends on your machine and your compiler. Check the .h file that you're including. \_ Yeah, I just realized that it compiles w/ gcc... I have some problems, apparently. --op |
2003/8/29-2004/2/14 [Computer/SW/Languages/C_Cplusplus] UID:12260 Activity:nil |
2/13 Where can I get c macro specifications? What keywords to look in google? \_ You might also want to find a good book on the specification of English, so you don't have to look like an ignorant tool asking a simple C question. \_ what do you want to know? There's the C language spec that you can buy from ANSI. You can ask on the comp.lang.c FAQ. You can buy K&R. Or you can see: http://www.lns.cornell.edu/public/COMP/info/egcs/cpp/cpp_toc.html \_ you can also get a cheap copy of the standard by buying the now out-of-print book "annotated c standard" or something like that, by herbert schildt. just read the left pages and ignore all the crap he spews on the right pages. how you find used copies of books is up to you. |
2003/8/23 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Java] UID:29445 Activity:nil |
8/22 http://www.wired.com/news/conflict/0,2100,60144-2,00.html Total crap. \_ 1. Post the first page, not the second. 2. That sucks. 3. This wouldn't have happened if he were handsome. \_ yes. yes. no. \_ Look at the mug on this kid! I don't know if he should be let go out of sympathy or locked away so no one else ever has to see him again! http://www.savebrian.org/media.html |
2003/8/15-16 [Computer/SW/Languages/C_Cplusplus] UID:29352 Activity:kinda low |
8/15 Are there any standard best practices for "faking" namespaces in C? Right now I'm prefixing my function names with "xb_"; is there a better way? Please explain if so. Thanks \_ you know if you declare a function as static, it has file scope \_ sorry, yes. The prefix is not so much a namespace as a module identifier... so I have stuff like p_ for the parser, etc. The problem is that I'm moving C++ stuff to C so that it can be used by 1) non-OO types in my group and 2) a certain C-only toolkit (don't ask). \_ perl |
2003/8/15-16 [Computer/SW/Languages/C_Cplusplus] UID:29350 Activity:moderate |
8/14 any spreadsheet programs that can be interacted with via command line? e.g. excellike -e '$a4$b=44; printf "g65"' \- helo possible emacs wi/gnudoit ok tnx --psb \_ is there anything emacs *cant* do? \_ give you an easy-to-use intuitive interface. -ali \- i think the learning curve for emacs is pretty reasonable. you can get started ithout learning how to write a major-mode. you just need C-npfb, C-xC-f C-xC-c and 5 or 6 other things. Also that teachkeys options makes things easier. --psb \_ teachkeys?? |
2003/8/14-16 [Computer/SW/Languages/C_Cplusplus] UID:29347 Activity:low |
8/14 Is there a libc function that returns a count of the occurences of char c in string s, instead of the first index? Thanks \_ No, but really: i = 0; st = s; while (st = strchr(st,c)) {i++;st++;} \_ why strchr instead of just directly accessing the string as an array? \_ No particular reason. i = 0; st = s; while (st) { if (*st++ == c) i++; } \_ poignant irony. you use strchr to prevent the bug the above code suffers from. also, you should use for loops. it'll be more readable. -ali \_ ^(st)^(st && *st) |
2003/8/11-12 [Computer/SW/Languages/C_Cplusplus, Politics/Domestic/California] UID:29306 Activity:very high |
8/10 Did anyone know Georgy Russell (CS c/o '99)? He's running for governor. \_ you are aware that Georgy's a she, right? \_ Does it matter? -!op \_ well, if the op is looking for people who know her, yes, it does. \_ Not really. The people who know her would know she's a she, would they not? \_ So's Gary Coleman, big deal, what's your point. \_ Questions don't have points, they are inquiries... if someone was a classmate of his, they might say "Ya, the dude was a big dork, I couldn't stand him." or "he was always stepping outside of soda to smoke doobies." \_ Or they could be asking a question to call attention to something. You might also want to look up "rhetorical question". I deserve a fucking medal for being so polite to you, this being the motd and all.... question". \_ I'm with ya, friend! --motd grammarian #1 Fan \_ If he wins will he accept millions every year from the Computer Scientists Union to keep pushing their part of the budget up while everything else goes down? doing the heroine look. I bumped into her at a bar/club in SF (near \_ fyi: http://www.georgyforgov.com \_ What's the "heroine look"? \_ I read it last week. She isn't quite joking, yet she isn't serious either. What's she trying to do with the website? \_ Oh shit, I know who she is. I took several classes with her. I remember her name as Georgina. She was kind of cute, then started doing the heroin look. I bumped into her at a bar/club in SF (near the baseball stadium) once. She was also my reader for CS162. \_ "I think I'll look like a heroin addict today." fuck off. \_ I'll vote for her if she stops using pine. \_ What's the "heroin look"? \_ Too thin. Underfed looking. Pale. Gaunt. Boney. Sickly. \_ So you knew her too? \_ nope. I've seen the type. It's common among young women with self worth issues. \_ [ motdspellingd was here ] \_ She's cute! And EECS? Got my vote! \_ Your vote went easy. There's nothing on her site about bjs for eecs votes. \_ From her website: 630r6y == G0\/3R|\|0R. no joke. \_ I hope she didn't dump $3500 on this. The state will just spend it on something stupid. \_ she's raising money by selling underwear on ebay. \_ new or used? \_ Hell, anyone who puts big, ugly Simpsons graphics in her .plan can't be all bad. \_ And she logs in to soda while she's at work-- c'mon, folks, she's _got_ to be our candidate. \_ So does everyone else here. \_ ...and none of the rest of you are running for gov. Ergo, she really represents us. \_ Dear god man, did you read her platform? She is far too liberal. \_ "Ergo" probably is, too. Remember we're not all 60 hour/week alumni. Some people on the motd are students who haven't yet reached political maturity. Things like legal pot seem important to them. \_ There's almost no one on here that could represent "us". Why? Because there is no "us". Maybe you've noticed a few times here and there where there were some minor political disagreements on the motd? In what way does she represent "us"? Ergo, et al, etcetera, cum laude. \_ "Ergo" is the only word I remember from that dumb Architect monologue. \_ Anyone at Veritas know her? |
2003/8/6-7 [Computer/SW/Languages/C_Cplusplus, Computer/HW/Memory] UID:29256 Activity:low |
8/6 In C++, if I need to keep an STL vector around (because it's a field in a class I still need) but would like to minimize its memory usage, how do I do it? resize(0), clear(), reserve(0), or something else?? Thanks. \_ none of those will deallocate already-allocated memory. use the "swap trick": assuming your existing field is f, do vector<foo>(f).swap(f). Or since you want just an empty vector apparently, vector<foo>().swap(f) will suffice. -jl |
2003/7/29-30 [Computer/SW/Languages/C_Cplusplus] UID:29171 Activity:high |
7/29 I want to zero-initialize an array of somewhat large structs. What's the best, most portable way to do so? C++, embedded systems, stack-based array. TIA. \_ memset()? \_ the best way is probably to have a brace initializer that initializes the first struct explicitly (to all 0's). the rest of them will then be default initialized (to all 0's). this is also most portable because it will take into account weird systems, where e.g., the null pointer is not internally represented by all-bits-zero. -jl \_ do you mean MyStruct array[100] = { }; or MyStruct array[100]; array[0] = { }; ? \_ the former, though I meant you should have something in between the braces to initialize the first element. actually, gcc seems to accept just the braces, but looking at the grammar, this appears not to be legal. someone feel free to clarify this point. also note that your latter option is assignment, not initialization. -jl \_ It's legal as written -- an empty initializer list is explicitly allowed. --mconst \_ reference? section 6.5.7 of the c standard doesn't appear to mention any such thing, nor does the grammar. \_ The original poster asked about C++; the C++ standard allows it (8.5, paragraph 1). It's not allowed in C. --mconst \_ C++ \_ not portable \_ Yes, portable. \_ do you mean all-bits-zero or each field in each struct assigned to zero? If the former, why not use memset? \_ Sorry, I'm not that great at this-- is there a difference b/w all bits zero and all fields zero? I really just want to initialize it to something "non-garbage" to distinguish between a struct that's been written to and one that has not been. Thanks \_ Yes. null pointers are not necessarily all-bits-zero. floating point numbers have two representations for the value 0 (although one of them is all-bits-zero). \_ they are the same in c++. 0 is guaranteed to convert to the null pointer [conv.ptr]. \_ To be pedantic, any constant integer expression which evaluates to 0 is guaranteed to convert to the null pointer (say, (1-1) for example). |
2003/7/12-13 [Computer/SW/Languages/C_Cplusplus] UID:29015 Activity:kinda low |
7/11 Why does rlogin open two connections? How does the server tell the client to listen and associate the "backwards" [S->C] connection with the initial connection [C->S] ??? C->S foo.978 bar.shell 49640 0 24820 0 ESTABLISHED S->C foo.977 bar.975 49640 0 24820 0 ESTABLISHED \_ One is the KVND listening in on your unencrypted connection. \- hello rlogin uses out of band signaling. read the rfc or one of the stevens book or UTSL or mail me if you think i might not dislike you. --psb \_ You think the KVND is limited by your puny and pathetic RFC? For reasons of their own they've not yet pointed their orbital mind control lasers in your direction, but oh, soon, very soon now, my friend. |
2003/7/6-7 [Computer/SW/Languages/C_Cplusplus] UID:28939 Activity:high |
7/5 Besides method lookup of non-virtual methods, how is C++ considered slower than pure C? The follow-up question: why hasn't C++ or another OO language moved into usage in kernels and drivers? \_ Larger standard library + linkers which link everything = \_ You probably mean "Besides method lookup of virtual methods". large code = poor cache performance. \_ OO == Obscene Overhead. Lack of Language Maturity vs featurebloat \_ Non-virtual methods are as fast to dispatch as c functions. OO languages have been used in driver implementation: NeXT drivers could be written in Objective-C. Mac OS X uses a subset of C++, Embedded C++, for driver implementation. \_ So are there other areas of serious speed decreases besides method lookup? \_ I don't think virtual methods cause serious speed decreases (the cost of looking up a method in the vtable is pretty small). Templates and Exceptions have their potential gotchas. See: http://www.caravan.net/ec2plus/rationale.html http://www.caravan.net/ec2plus/question.html \_ Linux is writen in C so C must RULE! \_ Only in the last year or two have we had compilers that actually implement the full C++ standard (okay, only one does--Comeau C++ with the EDG front end). \_ Not really a valid point; plenty of software projects use / have used C++ in its present / previous incarnations. \_ True, but the standard was evolving pre-1997. Hence people tended to use C++ conservatively (which lost a lot of the benefits of the languague). Also, the comment below about C++ sucking is pretty much the same thing. \_ Wasn't BeOS kernel written in C++? \_ Where's BeOS now? \_ Isn't Windows all C++ now? \_ Because the major kernels in use are over a decade old, and C++ really sucked then. Completely new kernels rarely happen. \_ There's only one kernel! Or well, there's the odd numbered and even numbered and then there's the -AC branch and maybe you put the SMP and thread/locking patches in and oh no, now you've gone ahead and done it! \_ Serves you right for not using '1337 GN00 HURD! \_ Actually, I did. It was a bitch to scrape off the drive. \_ That is the "viral nature" of GPL software. - BillG \_ From what I understand, it's easier to be a moron with C++, but the raw performance issue is negligible for an experienced development team. |
2003/6/26-27 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:28847 Activity:moderate |
6/26 What's a "constant function" in C? I ran across this term in the gcc man page. Thanks. \_ look at the info page. const functions are a gcc extension. gcc assumes the function has no side effects and subjects it to common subexpression elimination, for example when you call it in a loop. -ali |
2003/6/25-26 [Computer/SW/Languages/C_Cplusplus] UID:28835 Activity:moderate |
6/25 Can anyone recommend agencies for temp/contract programming work (Java, C/C++)? I prefer LA area, but Bay Area is good too. Thanks. -ciyer \_ Taos? \_ Mindsource, http://vitrixinc.com, modisIT? --chris |
2003/5/13-15 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Java] UID:28427 Activity:high |
5/13 Stupid C++ question but I can't get it to compile: struct MyStruct {}; class Super { public: virtual void foo (MyStruct str, int* bar) = 0 {} virtual void foo (MyStruct str, unsigned int* bar) { return foo(str, reinterpret_cast<int*>(bar)); } } class Sub : public Super { public: void foo (MyStruct str, int* bar) {} } Sub implements foo for a regular int, but should use Super's foo for unsigned int. But whenever I compile I get errors about "invalid conversion from `unsigned int*' to `int*'" from code that uses an instance of Sub. Help? \_ is foo virtual? \_ sorry, yes-- the first foo is virtual, the second is not (though I've tried making the 2nd virtual as well.) \_ I've put an explanation in ~mconst/pub/overriding-overloading; let me know if that answers your question. --mconst \_ I had to go look it up to make sure, but your answer omits the using delcaration. One solution is to add one line: class Sub : public Super { using Super::foo; //imports *all* overloads foo (MyStruct struct, int* bar); } The standard dictates that if you have the same signature from a using declaration and a member declaration, the member declaration wins. -emarkp \_ You're right, that is nicer; I've fixed my explanation. (Unfortunately, though, it doesn't work with gcc 2.95 or with Visual Studio .NET.) --mconst \_ It worked with VS .NET 2003 (7.1). I'm not surprised if it didn't work with 2002 (7.0). The conformance is nearly complete (missing exception specifications and export IIRC). -emarkp \_ You must be explicit with each overload. C++ rules are that if you hide one function, you hide *all* overloads. Hence foo(Mystruct, unsigned int*) is not visible in class Sub. See http://csua.org/u/ec6 -- look for "Q55" -emarkp \_ thanks for the helpful answers; I tried the using clause but didn't get instant results; this is targetted to a platform with a rather old version of gcc so I'm just going to suck it up and copy-paste into the subclasses. Thanks again. -op |
2003/5/10 [Computer/SW/Languages/C_Cplusplus] UID:28396 Activity:high |
5/9 What are some reasons that would cause malloc to cause a segmentation fault rather than just returning NULL? I'm getting a seg fault trying to malloc some float**'s. \_ typically you have some other pointer bug that overwrote/corrupted malloc's bookkeeping data, causing it to segfault. \_ what sort of other pointer bugs? |
2003/5/6-7 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Python] UID:28355 Activity:low |
5/6 How difficult is it to write a python wrapper around a small C++ class? Any references would be appreciated, thank you. \_ Pretty easy. If you use the simplified wrapper and interface generator (http://www.swig.org you can use the same C++ code from python, guile, tcl, perl, etc. |
2003/5/4-6 [Computer/SW/Languages/C_Cplusplus] UID:28326 Activity:high |
5/4 How reliable is <DEAD>cal.berkeley.edu<DEAD>? I'm wondering whether to use them as a permanent email alias. \_ I started using this around december as an alias (so far only to my csua account) and havent had any problems. I've experienced a slightly longer delay on average when sending mail to this as opposed to my csua account direcly (on the order of 3 minutes) ... but never any downtime as far as I know. \_ I've been using it since it first started. They had some problems initially but it has been pretty reliable for the last several months. \_ It's really cool! It's a C-64 with tcp/ip loaded up from a 1514 using a serial/ethernet converter! All email is stored is ram stored and directly sent to the next hop so you don't have to worry about waiting for your mail to hit the second 1514 drive. I'd trust it with my life! Although sometimes they take it offline after hours to play any number of C-64 classics but that's only fair. \_ hi dork! \_ WooHoo! Who's up for a game of M.U.L.E.? \_ I'm partial to space taxi! (I have vice on my pc and play these things all the time). \_ I've been using it since it first started. They had some problems initially but it has been pretty reliable for the last several months. |
2003/4/27-28 [Computer/SW/Languages/C_Cplusplus] UID:28238 Activity:kinda low |
4/28 Too many political trolls, so here's a computer one: Ok... how did sodans/calgrads start up on learning COM/MFC? Learning things like VxWorks, RogueWave and J2EE was pretty easy given my Cal background, but Win32 has always eluded me. MFC looks big an hairy, and COM doesn't seem too much friendlier. That said, C# looks to be pretty easy to pick up... although I'd be more interested in learning to write things like WinAmp and Win32 Games for fun. \_ I have used a lot of open-source software on Windows platform. From my impression, most of the stuff is written WITHOUT using MFC at all. The general consesus is that MFC is to bloated to do anything useful. Instead, these guys tend to put things together using C and Win32 API calls. \_ MFC isn't bloated, it simply sucks. At best it's schizoid, and often you have to go down to the C API to do anything anyway. Use wxWindows instead, and you also get cross-platform code. \_ COM sucks. Try Qt if you want to do Windows stuff. \_ Qt sucks. \_ Qt R00lZ0rz; u r n07 37337. \_ C# is easy. It's also easy to get to the point where you want to beat your head against the wall until bloody. The libraries are the strong point, but they're woefully underspecified. (Would it hurt MS too much to tell us what the return value is on failure?) |
2003/4/23-24 [Computer/SW/Languages/C_Cplusplus] UID:28204 Activity:very high |
4/23 Does google analyze people's search behavior and which link they click in order to determine which link should come up first? Like if a lot of people search for C++ STL library and always click on the third link first, then in the future the third link will move up and become the first link. Does that sort of thing happen? \_ does their description of PageRank help any? I think it is public knowledge (they wrote about it). It is mainly based on the way the web is structured and not on the behavior of google users. \_ Yes, by slamming a particular link in google you can directly changing your pr0n site's ranking. Yup, sure. change your pr0n site's ranking. Yup, sure. |
2003/4/22-23 [Computer/SW/Languages/C_Cplusplus] UID:28189 Activity:insanely high |
4/22 Anyone know a good link that explains all of C++'s use of the keyword mconst? \_ http://www.parashift.com/c++-faq-lite Search for const in the text box. Search for mconst in the text box. \- perfection \_ The real PSB would know this already. Wouldn't he? \_ who the hell said i was psb. i'm not. -!psb \_ the \- is a psb thing. \_ only if tailed with "ok tnx." and the spacing has to be foobared. \_ The psb shall do as He pleases! --psb #1 Fan \_ we haven't had a good C++ discussion in a while. It's time to revisit. Anybody use C++ in a truly object oriented manner? Does true OO even exist outside of the some lame-ass textbook example on how the truck class is inherited from the automobile class? Every C++ prog I've seen is about encapsulating data (foo->bar = 1) and doing function calls (foo->func(1)). The latest C spec allows you to do both. So what exactly is the point of OO? \_ inheritance, virtual funcitons, templates (not really OO) all make life a lot easier. \_ inheritance makes life EASIER!?! have you ever been involved in a big C++ project? \_ my personal, limited experience told me that inheritance is not bad, but multiple- inheritance is pain in the butt (i.e at least our company never managed to used it properly enough to be useful IN THE LONG RUN) \_ He probably knows someone who took a class from BH. Does that count? \_ yes and yes. Yes, inheritance can be a headache if used poorly, but so can everything. Used well, inheritance is a godsend. \_ My current job is a scientific application with a few 100K lines of code. Fully C++. Yes, inheritance makes life easier. \_ It's probably a matter of opinion. But generally, use composition over inheritance. \_ I am so glad I don't work with you. \_ how do you know you don't? \_ Are you a total idiot? Use the right tool for the right job. \_ i think you should read stroustrup 3rd ed and go argue on comp.std.c++ |
2003/4/19-20 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl] UID:28170 Activity:high |
4/19 What's the closest thing Scheme has to a good standard library and a standard interpreter? \_ obUsePerl \_ Perl is a slow, broken mess. \_ there's a reason I like Scheme, and that reason is exactly why I can't stand Perl. \_ and that is? If you say consistency I will laugh. \_ a simple, elegant syntax. and then there are first-class procedures, first-class continuations, proper closures, hygienic macros, ... \_ i would rather read machine code than scheme \_ Oh please. The macros in CLisp and Scheme are a nightmare. \_ There is no better way to have general macros. \_ ok, what's a language with a better macro system? \_ I'll give you two: make, ant \_ make and ant do not have a macro system. \_ r5rs \_ R5RS is the language standard. It does not specify a standard library, and it's not an interpreter. \_ Is this for BH's project where the homeless guy gloms on to you until you get to campus and the campus police object beats him off? \_ /usr/ports/lang/scm |
2003/4/14-15 [Computer/SW/SpamAssassin, Computer/SW/Languages/C_Cplusplus] UID:28123 Activity:insanely high |
4/14 procmail question: All mail for http://domain.org goes through my .procmailrc file, and I'm forwarding @domain.org addresses to real "old" addresses. If a message is sent to both henry@domain.org and kathy@domain.org, it looks like it reaches henry twice, and doesn't get to kathy at all. How can I overcome this? It this beyond the scope of procmail? :0 * ^TOhenry@domain.org ! henry@oldaddress.com :0 * ^TOkathy@domain.org ! kathy@oldaddress.com \_ this can be solved with procmail but you need to learn how to use its branching structures, like { } blocks and the 'c' and 'a' tags. it's not hard to do but you need to carefully read the 'procmailrc' and 'procmailex' man pages. --aaron \_ Specifically, you need to replace ":0" with ":0 c" on every recipe. Right now your recipes are telling procmail to deliver to henry, and then it's done. "c" tells it to generate a carbon-copy to test with other recipes. \_ Rather, c tells procmail to pass a carbon copy to a fork handling the current rule and continue. Slight difference, but good to be aware of. --scotsman \_ just adding c is going to cause henry to get two copies of messages addressed to both; i think you need more. this is one reason i love qmail -- administering an email namespace is really easy and you don't need procmail. \_ it's easy to maintain an email namespace in sendmail also. -tom \_ for admins maybe. qmail makes it easy to grant virtual domains to indiv users with no add'l setup. \_ whereas in sendmail you might have to write a \_ If a message is "To: henry@domain.org, kathy@domain.org" will two messages get processed by this .procmailrc? \_ Great I'll incorporate that, but: don't two duplicate messages get processed by this .procmailrc? without the "c" henry gets two messages, kathy gets zero. with the "c" henry gets two and kathy gets two. script that calls "cat"--how horrible! -tom \_ i understand your point but the qmail support has a pretty rich feature set for this. accept that qmail actually does some things well, i know why you don't like it and i think you have some valid points but not everyone has your criteria. \_ i don't understand and am curious. How do i grant control of a virtual domain to an upriveleged user if i'm running sendmail? \_ give them a file to write to, and write a script to combine it with virtusertable. -tom \_ Uuuuh, security??? \_ quit being reasonable on the motd. white power! death to arabs! \_ The above rules are a recipe for disaster since they create a potential for a mail loop that's undetectable by sendmail and possibly other MTAs. A better recipe for forwarding mail to some other address would be: :0 * ^TOkathy@domain.org * !^X-Loop: kathy@oldaddress.com | formail -A"X-Loop: kathy@oldaddress.com" | \ $SENDMAIL -oi kathy@oldaddress.com \_ Thanks \_ Actually, I just found out that administering a domain's worth of email can't really be done correctly with a user's procmailrc. There needs to be an interface with the MTA in order to properly deal with multiple recipients, multiple messages, etc. Sorry to rack all yer brains. -OP \_ qmail is the *only* answer! must...use.... qmail....argh! thump! --qmail fanatic \_ Do you have any recommendations for a excellent and affordable web& email hosting company that uses qmail? |
2003/4/10 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:28060 Activity:high |
4/9 Right now I have tons of snippets like sprintf(errmsg, "Error %d: invalid type %d at %d\n", 1, myType, time); QueueError(errmsg); Is it possible to define a macro to take an arbitrary # of arguments-- #define ERROR(x) sprintf(globErrMsg, x); QueueError(globErrMsg); Or will the x in the macro just take everything up to the first comma? \_ #define ERR(args...) {sprintf(g_errMsg, args);QueueError(g_errMsg);} \_ Yes, if you use recent gcc or other C99-ish compilers, no for older ones. \_ A reliable method for doing this is to write a function that uses a va_list and vsnprintf: #include <stdarg.h> void Error (char *err, size_t sz, const char *fmt, ...) { va_list vl; if (err == null || sz <= 0) return; memset(err,'\0',sz); va_start(vl,fmt); vsnprintf(err,sz,fmt,vl); va_end(vl); QueueError(err); } BTW, You should really avoid sprintf since it doesn't have a good way to check thesize of the input buffer. \_ thanks for the code, I'll give that a try today. One question-- this is a real-time application, so there are a few common stdio calls I use regularly and the rest are viewed warily. Are there any non-constant performance implications for using vsnprintf? I can handle a +foo hit, but foo*strlen(err) might be pushing it. thanks. \_ that only matters if the content of your variables comes from input. \_ thanks for the code, I'll give that a try today. One question-- this is a real-time application, so there are a few common stdio calls I use regularly and the rest are viewed warily. Are there any non-constant performance implications for using vsnprintf? I can handle a +foo hit, but foo*strlen(err) might be pushing it. thanks. \_ vsnprintf calls vfprintf internally. In most cases sprintf also calls vfprintf internally. The same non-constant performance issues you may have with your implementation of sprintf will most likely apply to your implementation of vsnprintf. \_ that only matters if the content of your variables comes from input. \_ Program defensively. |
2003/4/10 [Computer/SW/Languages/C_Cplusplus] UID:28058 Activity:high |
4/9 Stupid question: as I grew older, I have found that straight ANSI C is one of most portable computer language out there. Why C is more portable than C++ ? \_ Because almost every single operating system in use today is written in C (not C++). \_ Compare K&R and Stroustrup. \_ why can't you answer him? \_ You see, K&R is really thin, and Stroustrup is very big. \_ what does that have to do with getting old? \_ once you acknowledge it's not a troll you will see the point he's making. \_ you can make me understand, but you cannot make me care. \_ Consider that there is no C++ compiler that supports all features of C++ according to the standard. C is a much simpler, /smaller/ language. \_ Comeau C++ supports the full ISO C++ standard including export. VC++ 2003 will support nearly all of it. I don't know where gcc stands right now. \_ and almost no C++ compiler supports modern (new ansi) C++ fully. It's a zoo out there! \_ what is more portable than straight ansi c? \_ yo momma so fat, it's definitely not her |
2003/4/2 [Computer/SW/Languages/C_Cplusplus] UID:27955 Activity:very high |
4/2 Once again, any ideas where I can find 'Big C' as a Nokia ringtone? And yes, I live in a country where people mute their phones in public and in restaurants and don't pick them up in movie theaters and I know-to-behave-thank-you-I-just-want-a-ringtone because more people have nicer better newer phones here with the same rings and I don't feel like fumbling for mine every time someone else's goes off. Thanks. -John \_ If everyone mutes their phones in public where you live, how is telling your phone apart a problem? And how is putting your phone on vibrate, like a decent human being, not a better solution to this? \_ "public" = restaurants and theaters and things. Don't be a pedant. And putting your phone on vibrate when it's lying halfway across a large test lab is not an option. Why am I arguing with you anyway? You're being a baboon. All I asked for was a ringtone. -John \_ ...which not one seems to have. So we're bored at work with nothing to do but make fun of you pointlessly. There are worse things we could be doing. Come on, argue! \_ No no no you're a baboon and I have no morals. And don't be bored, go look for a ringtone for me. -John \_ Just be glad I'm not hurling dung at you, as is my instinct. \_ I respond well to being called a baboon, please hold your breath while I attempt to help you out. \_ He wasn't calling you a baboon, he was calling me a baboon. I'm going to start hurling dung at you, too. \_ This is morally inexcusable John. The motd is ashamed of you. \_ I have no morals. Yuck foo. I just want my ringtone. -John \_ How to installing new for pine ring tone? \_ 1: Making fun of people's English grammar errors is pretty pathetic, since they probably speak your language much better than you speak theirs. 2: The common error is just "how to" instead of "how do I". That is the way questions are formed in many languages. You're just showing how ignorant you are. -tom \_ Wow, for once I really disagree with tom. -tom#1fan \_ Actually, I've ceased believing that there are any actual non-native speakers on soda. The questions are always so over the top that it's gotta be a native. |
2003/3/25-26 [Computer/SW/Languages/C_Cplusplus] UID:27833 Activity:high |
3/24 I have not been using C/C++ for the last 5 years. I am wondering if there's something like the Perl De/Serializer for C/C++. \_ What about something like ResourceBundle in Java? \_ of course not. mabye you should take a civics class, you ignorant liberal stooge. \_ Problems with your self-esteem? Mommy and daddy too mean? \_ ignore him, his penis too smal, that must be it. \_ what does any of this crap have to do with the OP's question? \_ What about something like ResourceBundle in Java? \_ Take a look at the following: http://www.parashift.com/c++-faq-lite/serialization.html http://xparam.sourceforge.net/guide |
2003/3/15 [Computer/SW/Languages/C_Cplusplus] UID:27702 Activity:very high |
3/14 Are the fields stack-allocated structs initialized to zero? (C++) \_ Nope. But, like C, you can always write MyStruct s = { }; to declare a struct s and zero-initialize it. --mconst \_ What is the difference between this and: memset(struct,'\0',sizeof(struct)) I usually use memset, but I'd rather use something else that involves less typing if it accomplishes the same thing. \_ There's no difference at all, unless you're on a weird machine that doesn't store zero values as all bits zero; gcc compiles the two to the exact same code. --mconst \_ Thanks. \_ it's not so weird for null pointers to be non-zero, is it? uncommon, but not unheard of. \_ I believe memset will work with heap-alloc'ed memory but "= { }" will not. man bzero, it's a little bit less typing. \_ I'd use bzero, but it is deprecated on Linux and other platforms. \_ of course the "= { }" won't work on heap allocated memory, because you can only initialize structures like that when they're declared, and declared variables are stored on the stack. \_ thanks, glad to know this now. |
2003/3/14 [Computer/SW/Languages/C_Cplusplus] UID:27692 Activity:high |
3/13 In C++, what is the type of the expression (01 << i)? Is it an int with all bits set to 0 save 1 at bit position i, or something weird and scary? \_ It's an int, just as you described. \_ thanks. |
2003/2/21 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Editors/Emacs] UID:27472 Activity:nil |
2/20 Another emacs question if you will. How can I get it to color code different syntax words if I'm editing a C file? Thanks. \_ Put "(global-font-lock-mode t)" in your ~/.emacs. -- yuen \_ awesome. thanks. |
2003/2/14-19 [Computer/SW/Compilers, Computer/SW/Languages/C_Cplusplus] UID:27419 Activity:low |
2/14 Is there any way other than using "_asm" to access x86 registers as variables in C code compiled with MS C++ Compiler version 12 or 13? (In the BC++ for DOS, for example, I can use "_AX".) I tried http://msdn.microsoft.com but couldn't find anything. Thanks. -- yuen \_ What is wrong with _asm, is it bad? \_ No, but I just want to do something like "if (_AX = 3) {...}". If I use "_asm" blocks I need multiple lines and a label. -- yuen \_Something seems fundamentally wrong with this kind of statement. Specifically, mixing C and assembly that way just doesn't work. I really think you must load the AX register into a short variable, then test the contents of that variable. Otherwise you may not get what you intend. \_ Okay, I'll do that. Thanks. -- yuen |
2003/2/12 [Computer/SW/Languages/C_Cplusplus] UID:27376 Activity:nil |
2/11 I need a codename for a new project relating to space starting with the letter C. Ideas? \_ "Project Codename". \_ "Project C-krit". \_ "Cassiopeia", "Cepheus", "Constellation" \_ "Columbia" \_ "Crash" "Catastrophe" \_ duh, "Cosmos". \_ he's fired, you're hired! \- "Butthead Astronomer" \_ Comet \_ cunt. oh wait, what kind of space... \_ "Cetec Astronomy" |
2003/2/6-7 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Security] UID:27322 Activity:low |
2/5 I picked up this year's Taxcut and it won't import last year's turbotax files. I'm gettign idiotic errors where it either wants to treat my TT file as a TC file and then reports a corrupt file or it looks for a TC named .T01 file when it's clearly a TT .tax file. I've played around with filenames and even looked at hex editing the binaries. Is anyone else trying to do the same thing? Is it working for you? \_ importing is highly over-rated. Name, address, soc security, etc can be easily typed in. The only other thing you need to worry about is carryover capital losses (stock). It's more complicated if you run a small business and need schedule C. But you probably don't run a business. \_ Hmm. Well that sucks. Thanks for the info. |
2003/2/5-6 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Java] UID:27308 Activity:high |
2/5 In C, the typical way to generate random numbers in the range [0, N) is (int) ((double) rand() / ((double) RAND_MAX + 1) * N). What guarantee is there that RAND_MAX + 1 does not overflow? \_ RAND_MAX is 32767. \_ RAND_MAX is guaranteed to be at LEAST 32767. \_ aren't your parentheses misplaced wrt N? \_ no. You generate a floating value in the range [0, 1), multiply by N, and cast to int. \_ right. as written, it's generating [0,1) and dividing by N, n'est-ce pas? \_ Note that you're casting RAND_MAX to a double. Standard IEEE754 has 54 bits of significand in a double. That's typically more than anything a 32-bit machine has to offer. However there is no guarantee against overflow. By the way, rand() is a crappy generator. The method above leads to non-uniform probability distribution (some values will be twice as likely than the rest), etc. \_ so can you change the seed each time, based on prev # and other factors to make it distribute more evenly? \_ it doesn't matter what the seed is. most implementations of rand() just suck. \_ understood. care to suggest a better way of generating random numbers? \_ digitize johnson noise and take the least signifigant bit? i'll bet you could make a box to do this for about a dollar in electronics. I think there are chips that do this, or use shot noise which is also white. -naive physicist \_ Actually, the best way would be to to take some radioactive material \_ well even just C's "random" function is better than "rand". look at "man 3 rand". i would try the /dev random device but then that's not very portable and measure either the amount of decay or the interval between two decay events and use that as a basis for your random numbers. \_ read from /dev/(u)random \_ http://www.boost.org/libs/random/index.html \_ well even just C's "random" function is better than "rand". look at "man 3 rand". i would try the /dev random device but then that's not very portable \_ It works on MacOS X, Solaris (8+), L1NUX, *BSD, how much more portability do you want? \_ (int) (drand48() * N); |
2003/1/18-19 [Computer/SW/Languages/C_Cplusplus] UID:27139 Activity:very high |
1/17 If I have "foo_bar_baz_struct_t *p, *q;", which of the following is better? 1. p = malloc(sizeof (foo_bar_baz_struct_t)); memcpy(q, p, sizeof (foo_bar_baz_struct_t)); 2. p = malloc(sizeof *p); memcpy(q, p, sizeof *p); Thanks. \_ 1 is far more obvious for me... \_ 2 is better if you think you are going to change what type of struct p points to frequently. 1 is the preferred way of coding for readability. \_ Well, I like 2. It's more concise, and you can't screw up and put in the wrong type in the sizeof. \_ My vote is for #2 too. Also, I like *q = *p better than the memcpy. And no, for someone familiar with C, I don't see how the memcpy makes anything clearer. \_I don't think that they are necessarily the same in straight C. In C++ that may be equivalent. Also, shouldn't you be mallocing q? \_I don't think that they are necessarily the same in straight C. In C++ that may be equivalent. Also, shouldn't you be malloc'ing q? \_ It seems so. Also, shouldn't OP be checking if the pointer returned by malloc is NULL? \_ You are exactly backwards. -pld \_ you think wrong. In C bar=foo does a shallow copy. \_ Yes, we know this, but the question is does memcpy do a shallow copy also? Somehow I think this is wrong. From what I remember memcpy does a bit for bit copy, which is very problematic once you get into things like structs and classes. The two may not be equivalent, and it certainly would come out different in the object code. \_ How do shallow and bit-for-bit differ? Very curious-pld \_ It may or may not, it depends on what the struct actually contains. That's the crux of the argument. If the struct contains a class or class pointer(assuming you are doing this in c++) you run into all sorts of different behaviors. \_ The proper answer is "they're identical" -pld \_ No they are not. Shallow copy copies pointers, deep copy copies objects also (potentially using copy constructors, etc.) \_ Is it possible that this is a Visual C++ extension for C? Possibly, if they are on crack. You can do this in C++ by defining your own operator= method. |
2002/12/19-20 [Computer/SW/Languages/C_Cplusplus] UID:26853 Activity:low |
12/18 For all you MacGuyver types out there ... I have a friend who wants to do C programming on his WinCE or Palm device (he has both). Any suggestions for pure C/C++ environments that work on the PDA's (as in all development is on the PDA). \_ Run NetBSD on the WinCE device. Use GCC. \_ Development Environment is free for WinCE (Pocket PC), and is just like visual c/c++. See: http://www.microsoft.com/mobile/developer/downloads/ppcsdk2002.asp |
2002/12/13-16 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Editors/Emacs] UID:26806 Activity:nil |
12/13 how do I configure emacs to automatically untabify when save on c/c++/java (etc) files? but not all files... thx \_ Meta-X auto-untabify-on-save-CandClones |
2002/12/9-10 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl] UID:26764 Activity:moderate |
12/9 help, i can't seem to figure out how to get the group info for a given user from c. In perl i'd just do @theuser=getpwnam USERNAME; $theuser[3] would be what i'm looking for. How do i do this in c? \_ man getpwent \_ getpwnam() |
2002/12/8-9 [Computer/SW/Languages/C_Cplusplus] UID:26749 Activity:high |
12/8 I just got handed a large Visual Basic...thing...and I need to convert it to C++ fast. Does anyone know of a good program that can do this in an automated fashion? I STFW'd and was only able to come up with some REALLY expensive software. Thank you for any assistance! \- contract someone unemployed? serious suggestion. \_ A good suggestion, but not within my power. \_ why do you need to do this? if it ain't broke, don't fix it. \_ Standardization. It's now Company Policy. *shrug* \_ "Ok, no problem, we'll need 250 man days. Do you want it in 2-3 years or do you want to hire more people?" \_ Code costs ~$100 per debugged/tested line. If you want some way to do it manually, run a metrics program and do the math on the real cost. Otherwise, you'd probably do well to convince management that they need to buy this expensive tool you described. They talk about this situation in "Rapid Development" by Steve McConnell, where management has fantasies of projects being completed in x days because they said so, but you would do well to dis-illusion them with the above math, and a copy of Rapid Development to back up your argument. [formatd] \_ Huh. That's sound advice. Thank you! |
2002/11/5 [Computer/SW/Languages/C_Cplusplus] UID:26409 Activity:high |
11/4 I'm having a problem formatting inline elements in xsl-- I have to handle the situation where <school>I graduated from <link href="<DEAD>www.berkeley.edu"<DEAD>Cal</link> in 1998. </school> My current template is like this: <xsl:template match="school"> <xsl:apply-templates/> </xsl:template> But the this causes the space after "Cal" to be ignored, rendering "I graduated from Calin 1998." (with Cal appropriately hyperlinked) How do I solve this? -mjm \_ Don't know how well this would work, but you could try <xsl:preserve-space elements="school"/> That might be a little overzealous, though. -geordan \_ I tried that, no luck. It seems like this would be a problem common to any inline element, but I haven't seen a good solution yet. -mjm \_ You're seriously doing your resume in XML? Trust Motd Wisdom on this: no one cares what format your resume is in. \_ The example was fictitious but representative. \_ You never heard of XML Resume? Let's you create text, html and pdf resumes w/ ease. Also, lets you create different resumes based on where you are applying (e.g. C vs. Java resume). -!mjm \_ It also allows you to demostrate that you know XML/XSLT when applying for XSLT jobs. \_ No one cares. Your text only resume is going to a bimbo in HR who doesn't know anything about anything and is only scanning for keywords off a list. Your resume is not the place to demonstrate your madly kewl hx0r skillz. As an alum who has "been there, done that" in the job market and Not sure why it would make any difference. has had no problems getting new and very high paying jobs during a down economy I think I might be in a good position to tell you this and be right. \_ How high is very high? -alumnus looking for job. \_ My page comes up correct with the space and I use this: <xsl:template match="school"> <a href="{@href}"> <xsl:apply-templates/> </xsl:template> Not sure why it would make any difference; perhaps it's not the syntax but rather a bug in the transformer you use. \_ This will linkify the entire sentence, won't it? \_ Err...no, it only does so for the school element. |
2002/10/17 [Computer/SW/Languages/C_Cplusplus] UID:26236 Activity:nil 72%like:26228 |
10.17 Primary language used: ocaml: . java: . c: .... c++: . c#: . perl: .... other: fortran77: fortan90/95/99/2000: . assembly: . English: . \_ How to learn good English? \_ Take CS9H. bourne shell: . pascal: . labview: . html: . |
2002/10/17 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Perl] UID:26228 Activity:nil 72%like:26236 |
10.17 Primary language used: java: . c: .. c++: . perl: . other: |
2002/10/16-17 [Computer/SW/Languages/C_Cplusplus, Computer/HW/Memory] UID:26215 Activity:moderate |
10/16 In C, What's the difference between offset_t and ptrdiff_t? I used to use size_t for variables representing offsets, but now I think size_t might not be right. Thanks. --- yuen \_ I don't know for certain, but here's my thinking: ptrdiff_t is signed and should be sufficient to store the displacement between two items of the same type. size_t (produced by sizeof) is unsigned and should be sufficient to store the size of a type. offset_t (produced by offsetof) is unsigned (I think) and should be sufficient to store the offset of an element within a type. Therefore, aside from the sign differences, the range of ptrdiff_t may be greater than that of size_t which \_ I take this back. It makes no sense. (Not that the rest does.) --jameslin may be greater than that of offset_t. Maybe you should ask on comp.lang.c. --jameslin \_ size_t is usually 32 bits, and is used to represent the size of objects or buffers and the like, off_t is used to represent offsets in files and is often 64bits. Why does this matter though? Outside the interfaces these are used in, there is no special meaning to them. \_ I see. off_t (and offset_t on SunOS5) is for file offsets, not memory offsets. So I should use ptrdiff_t for memory offsets then. Thanks. --- yuen |
2002/10/4-5 [Computer/SW/Languages/C_Cplusplus] UID:26101 Activity:insanely high |
10/4 Which of the following #endif comment in C is better? (a) #ifdef FOO ... foo code ... #else .... non-foo code ... #endif /* FOO */ (b) #ifdef FOO ... foo code ... #else ... non-foo code ... #endif /* !FOO */ Thanks. \_ a actually makes sense. \_ to normal people, but I'm sure that some 1337 l1nux d00d5 will like (b) better. (Trust me, I've seen stranger) \_ Ah, the GNU way. \_ please learn to spell, its GN00 not GNU. - 1337_5P34Kd \_ The first one is better, since !FOO is usually used to match a ifndef FOO. \_ I don't get the joke..... \_ Me either. Some sort of ultra nerd thing I guess. \_ It's not a joke. I'm trying to figure out how to write my code. Thanks for the responses so far. \_ Uhm... ok. You realise its the same code and only the final comment is different by a single character? Neither way is "better". Comments are there to make sense of your code for others. I don't think you need that comment at all unless you work with monkeys in which case it won't matter anyway. Good luck! \_ Yes, only the final comment differs by a single character. I should've mentioned that the code between the #if and #else and between the #else and #endif is usually pretty long, about 100 lines or so. So I want to see which comment makes the code more clear to others. \_ Oh. In that case I'd use the first one. \_ Okay. Thanks. \_ A. the #endif goes with the #if, not with the #else. Otherwise, it'd be #endelse. |
2002/8/25 [Computer/SW/Languages/C_Cplusplus] UID:25677 Activity:kinda low |
8/24 What preprocessor is needed for man files that ends with suffix "x"? \_ rpcgen \_ this sounds funny because rpcgen generates C code rather than man page. \_ this is funny because rpcgen generates C code rather than input for nroff out of manpage files. |
2002/8/8 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:25522 Activity:high |
8/8 Why do people declare functions as "static" all the time in C? \_ one of the reasons is that static makes the function local to the file. to the file. Similar to a private method in C++ or java. \_ So that's just a linker issue? Preventing namespace collision? \_ that's one of the reasons. There are probably more, but that's why I like to use static in C. \_ Another is because some lame compilers barf if you declare a function that doesn't have a prototype unless it is static. |
2002/8/7 [Computer/SW/Languages/Functional, Computer/SW/Languages/C_Cplusplus] UID:25509 Activity:low |
8/5 What's a function pointer and when is it useful? \_ pointer to a function, useful for emulating C++-like functionality (inheritance, vtables) and pretty efficient \_ not to mention things like signal handling .. \_ And the mess my 60c partner made of what was supposed to be a simple switch/case statement that he turned into an array of pointers to functions called based on some weird shit pulled from his addled little brain. No it was not useful. I killed him and fed him to the pigs. \_ have you taken 61a? did you miss the part about higher-order functions? ever use qsort or bsearch from stdlib.h? \_ For those of you who grew up learning OO oriented languages you can think of it as a primitive form of an interface. In general type of programming you should generally avoid it. If anyone remembers Xt programming you know why. \_ In languages like lisp, tcl, python, etc., you can pass a function as an argument. For example, you can pass a comparison function to a sort routine as noted above. In C you can't pass the function, but a pointer to the function which serves the same purpose. As described above, you can use this to implement things that seem more like classes in C. Take a look at http://soda.csua.berkeley.edu/~emin/source_code/red_black_tree to see an example. -emin |
2002/8/5-7 [Computer/SW/Languages/C_Cplusplus] UID:25503 Activity:very high |
8/5 In ANSI C, assume a typedef of Foo for an UnsignedInt16 , then assume that I declare a multiarray Foo foo[a][b] = {..}. How do I assign a pointer to foo? Do I do a Foo **bar? If Foo **bar then bar=foo doesn't seem to work. \_ References to an array name only decay to pointers for one level. So do bar = &foo[0].x \_ huh? what the hell is x? \_ x is the first element of type Foo \_ x is someone slipping up with emacs. \_ This doesn't make any sense. A multidimensional array does not contain actual pointers to any of its elements, so there is nothing for bar to point at. If you do foo[0], this standard notation. Also, foo *bar can be assigned to bar = foo if foo is Foo[a] produced only a temporary pointer; getting the address of if foo is Foo foo[a]. this is not a sensible thing to do. \_How so? Main has char **argv, and I can reference it using standard notation. Also, Foo *bar can be assigned to bar = foo if foo is Foo foo[a]. So why wouldn't there be an analogous expression for a pointer to a multidimensional array? If what you say is true, then is it impossible to reference a multiarray using a pointer? How would I go about passing multiarrays to functions then which would like to store a pointer to the multiarray? \_ your C-fu is lacking. The declaration T foo[a][b] allocates a contiguous chunk of memory that's a*b*sizeof(T) bytes long. argv, on the other hand, is an array of pointers and is not \_ sorry, I misspoke. I meant to say that it is a pointer to an array of pointers. a true multidimensional array. The fact that you can dereference elements to both using [] operators is syntactic convenience. Go read the comp.lang.C FAQ, section 6 in particular: http://www.eskimo.com/~scs/C-faq/top.html \_Yes, I know that foo[a][b] allocates a contiguous chunk of memory, so does foo[a]. What I have a problem with is the fact that foo[a] can decay into a pointer but not foo[a][b]. I read the FAQ, and I think essentially the problem is is that ANSI C provides no method of recursive pointer decay from a multiarray. I don't know why not, perhaps it has something to do with compiler performance issues. So I suppose i the short answer is "no, it can't be done" and I solved the issue by dynamically allocating a multiarray using a pointer pointer. \_ Why should foo[a][b] decay into a pointer? \_ Hmm, I learned C 12 years ago and I still find this section of the FAQ very useful. \_ What you can do is Foo (*bar)[b]; bar = foo; \_ shouldn't that be: Foo (*bar)(b); bar = foo; \_ uh, he's not declaring a function pointer. \_ If the OP has their answer from the above would you please delete this thread. I'm losing 1d4+1 sanity points everytime my eyes pass over this part of the motd. thanks. \_ the first "1" in 1d4+1 is redundant. unless you're using it as a placeholder, remove it, or you threaten a segfault in the rest of us. \_ No, that's how it's done. When you publish your own game system you can drop the "1" in front. Until then you take 1d30+7 silliness points and are stunned 1d4+1 motd threads. |
2002/7/30 [Computer/SW/Languages/C_Cplusplus] UID:25445 Activity:high |
7/29 Is there a util to properly justify a unix text file to 80 characters? This isn't for the motd. I just want something that will wrap words if need be, treat a double newline as a seperate paragraph, and leaves lines less than 80 chars alone \_ YES! We did this as the second project in Hilfy's 60c class!!! I just *knew* the pseudo-latex format project had some use for someone somewhere! We also had macro replacement including recursive macros that could replace other macros with parameters, etc, etc. Do you also need code to detect if one non-directed graph (with variable node labels) is a sub-graph of another non-directed graph? We did that, too. \_ fmt \_ "M-x fill-region" in emacs. See Help for its various options. --- yuen \_ no. (n.b. the op asked for "leave lines less than 80 chars alone." actually i am fairly sure nothing will leave non- paragraph delineated less-than-80 characters lines alone.) \_ I really just want to be able to maintain the formatting on a block of text (lyrics / poetry, maybe others). Any ideas? \_ learn roff. |
2002/7/15-16 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Java] UID:25363 Activity:very high |
7/14 Is there any viable way to make a career out of perl stuff? it seems that everywhere is J2EE, etc. \_ http://jobs.perl.org \_ how to get the foot into the door -- old and inexperienced \_ Get a code portfolio together. Get some perl gods to look it over. Send out en masse \_ Certainly. I work for a large e-commerce site, and our entire fufillment system is written in perl. (Sorry, no openings.) \_ I had no idea that people still boast about working at an e-commerce or b2bi company anymore. \_ What exactly is a "fufillment" system, anyway? \_ yer mom? \_ 1) he wasn't boasting, 2) he has a job, 3) he didn't say anything about who or what his company is/does. Get over it. \_ 1) he WAS boasting. "I work for a large e-commerce site" is bragging. Boasting is okay but at least have something to boast about. 2) Unless he's a janitor, I don't consider any position in an e-commerce company to be a real job. 3) He works at an e-commerce company. You can infer that it doesn't do anything. See http://www.trilogy.com for details. \_ You need to get a grip. He was just providing a picture of how a decent number of jobs exist for the project. \_ Uh, no. I was originally being facetious but someone had a bug up their ass that they had to respond with 3 points. So I did what any good old motder does and respond with 3 sardonic points myself. And no decent jobs exist for the project. The guy even said that there weren't any openings. \_ No you were originally being an asshole and still are. 1 point. \_ Are you the one who believes in getting mythical "motd points"? \_ Perhaps you ought to practice saying, "I'm wrong." \_ I'm C00L D00D cuz I do top-notch Perl coding for a leading e-commerce site which specializes in B2B integration and extremely extensible e-solutions. What do we make? Nothing. We specialize in "mindshare". You guys need to get a life. Or better yet, a REAL job for once. \_ Still an asshole. Is that another point or do you not get double points for the same thing? Just curious. \_ Aaaawwww. I'm soooo sorry I hurt your poor little feelings. Is there anything I can do to ease your pain? \_ Uh? You're confused. I don't see how anyone with the tiniest shred of brain material could think my feeling were involved in any way. Fucking weirdo. \_ thanks for answer my question... may i email you for further questions? please drop a note --kngharv \_ Okay, kngharv. I'll give you some useful advice if you're actually willing to listen to it rather than just resorting to childish insults. If you want to learn Perl, that's fine. Just don't make an entire career out of it. And don't make the same mistake that many EE/CS grads here have made by joining these dot-coms/B2Bi/e-commerce companies thinking that there's some pot of gold at the end because most of them are just failing companies that don't really do anything substantive. And I can assure you that, if you choose to take this route, your skills will most certainly not \_ You're still presupposing that the poster was "boasting." Sorry, but "I work for a large e-commerce site" doesn't quite qualify as "boasting." Thanks for playing. be recognized. I know from working in industry that many employers look down on these types of NCG's as just purely incompetent gold-diggers. But it's your life so you decide what's right for you. \_ Wow! Someone is *really* bitter about missing about on the easy money so many others here got in the last few years. May I suggest valium+therapy combo? \_ No, I think the OP was just trying to be helpful by answering the original question. You, on the other hand, seem to be freaking out. Calm down, man. \_ No. My original response was that I found it surprising that people still boast about working at an e-commerce site. That was neither being an asshole or freaking out. I was just pointing out that this whole e-commerce thing is just part of a dead gold-rush and people should get back to reality. Of course, there's always somebody who gets so offended by this that he freaks and and feels the need to post a 3-point response. \_ Stop being a bitch. Get a life. - yap \_ No one freaked but you. You're just bitter you stayed with your $50k job the last 5 years while others were raking in more than twice that at fake companies and some of them even cashed in big time. Now that things are settled out, those same folks are still making $90k or more while you're waiting for your next 1% COLA. I'm really truly honestly sorry you chose poorly but ranting about it on the motd and bashing some shnook who merely mentioned on the side what his company does with perl is not a very endearing quality. It was a once in a lifetime free money fest and you missed out. It isn't the ecommerce guy's fault. \_ I graduated in 2001 and was wondering is there any way to make a career out of Java if you don't want to do web devel. Goddamn, I wish we actually were able to hone C/C++ skills at Cal. I guess this seems trollish, but if you graduated in the last 2 years or are still in school, you'll realize that this is not a troll at all. \_ agreed \_ agreed #2 \_ I'm curious about this java craze. I'm not in the job market so I don't know much about what skills are in demand. For those of you that are looking, do you see more jobs that need Java/ web stuff or those that need C/C++? -alumni \_ "alumni" is plural, "alumnus" is singular. \_ In my experience, most Java work is monkey/grunt coder work. Phil Greenspun has an amusing saying that Java is a good language for roping together hundreds of mediocre programmers. Regardless of what you think of Greenspun, I think it's a pretty accurate description of Java. Much of Java's popularity is attributable to the fact that Sun's marketing team went to town on the middle-managers of the world. At the end of the day, Java is an okay programming language with a very wide library of utility classes. \_Java is a AWESOME programming language, its the JVMs that are mediocre, thus 90% of "Java's" problems are in the implementation. \_ Is there an underlying reason why the JVMs are mediocre given that quite some time has elapsed for people to get their act together? \_ Okay troll. I'll bite. Why is Java AWESOME? And if Java is so AWESOME, why do all the non-Java engineers at Sun love to bash on it so much? Java does many things right, but it also has many serious design flaws. For example, the stack machine implementation of the JVM REQUIRED by the Java spec is idiotic (it kills performance). Another example is the fact that basic types are not first order classes. This is simply idiotic. \_ Cal teaches CS. Cal does not teach C/C++. If you have a problem with this, go to a vocational school. If you can't learn C/C++ on your own after learning language basics (and especially after learning Java), then, well, you deserve what you get. \_ This is a nice theory but try getting a C job when your school didn't teach any C classes. Live in the real world for once instead of repeating the ancient CS dept. spew. \_ I found it easy to get a job coding C. My major was mse and I only took one CS class at cal (cs298 - fuzzy logic). Most companies care about how well you can code, not whether or not you took C programming classes. \_ uh, I got a C job. You should have been able to pick up C while being an undergrad at Cal. If you don't have a job, what's keeping you from honing your C skills now? Sheesh. Do some legwork. \_ So who the hell hired the two of you (above) to write C if you hadn't done anything in C before? Is the stock public? I want to know what to short. Thanks. \_ Yes. Just find a company where they are into web-based development. All but three or four of the "engineers" in the linux/web startup I worked for were perl/php coders who didn't know c/c++, java or any other real language. Our company was bought by Sun for lots of money (~ $1 billion) and most of these '1337 P3RL H4X0R5 made enough on their ISO options to buy homes in Sunnyvale, San Jose and Cupertino. Some made enough to buy new M3s plus homes. \_ Well, you can keep your expensive homes and fancy cars, I'd rather use Java \_ ...and on an unrelated note, i'd rather live somewhere where you don't have to be a millionaire to buy a decent (if you call living in the south bay decent) home. \_ Uh, son, those days are dead. They didn't get rich by coding toy web languages like php. They got rich by being lucky. The entire dotcom lottery was just that, a lottery. Some people got really rich but most only did moderately well and the bottom quarter got totally fucked. \_ did they get fucked as bad as the bottom quarter in 1849? this is not the first time greedy idiots invaded the Bay Area. \_ When my company started folding, we had to eat the lesser skilled workers in order to survive. \_ Why'd you wait that long? \_ Needed to fatten em up a bit. |
2002/7/13-15 [Computer/SW/Languages/C_Cplusplus] UID:25351 Activity:moderate |
7/13 how do i pass variables to the system in C ? e.g. system("echo input is %s", argv[1]); results in "input is %s" but I want the system to see argv[1] (I know i can just use printf, but not for what i really want to do). \_ sprintf into array, pass array to system? \_ so write your own function that takes a variable number of arguments, allocates memory, concatenates the arguments together, calls system on the combined string, and frees the memory. That wasn't so hard, was it? or, depending on what platform you're using, there may be some non-ANSI functions that do what you want. \_ Something like the following should work on Linux/BSD: #include <stdio.h> #include <stdlib.h> #include <stdarg.h> int fsystem(const char *cmd, ...) { va_list ap; char buf[BUFSIZ]; int ret; vsnprintf(buf,sizeof(buf),cmd,ap); if (cmd == NULL) return system(buf); return -1; va_start(ap,cmd); ret = vsnprintf(buf,sizeof(buf),cmd,ap); va_end(ap); return (ret > sizeof(buf) ? -1 : system(buf)); } \_ except for the obvious buffer overflow this code is susceptible to. A very dangerous thing to do, especially when passing things off to system(). One should include sanity checking to keep someone from passing on args like " ; /bin/rm -rf /" \_ I see no buffer overflow as long as vsnprintf is correctly implemented. Of course system() still sucks. \_ It is an example. He would be a fool to use it exactly as written without argument validation and command checking. BTW what buffer overflow are you talking about? I'm using a fixed size buffer, and I'm passing sizeof(buf) to vsnprintf, which is the safe way of doing this AFAIK. Is the problem in the fact that the return code from vsnprintf isn't checked? If so, I've just added that. \_ I was hasty about the overflow, missing that it was vsnprintf that was used, and thinking of vsprintf instead, which would make it susceptible. The point about argument checking still stands. |
2002/7/3-4 [Computer/SW/Languages/C_Cplusplus] UID:25273 Activity:moderate |
7/3 What format string do I use with printf() if I want to print out a variable of type "long"? Thanks. -- yuen \_ Type shrunken by the motd type shrinker. \_ man -S3 printf. \_ Thanks. -- yuen \_ Thx. -- yuen \_ Common word shrunken by the motd common word shrinker. |
2002/5/7-8 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages/Misc, Computer/SW/Unix] UID:24733 Activity:insanely high |
5/7 So how does /csua/bin/me record my identity? \_ It doesn't. people are stupid. \_ All I was referring to was the fact that other users will see that you have a lock on the file, and then see new contents. Duh. \_ ...As opposed to editing the file in vi, finding that it's locked, and running fstat anyway? Whatever. -geordan \_ fstat is a violation of my privacy rights. I insist it be deleted immediately. \_ Well, an alternative is to copy the motd, edit, then copy back. You can diff to see if someone else changed it, and manual merge. This way I never clobber anyone, of course now I'm learning that other people feel free to clobber me because I didn't lock the file before *they* started editing. Well fuck you with a spoon. \_ The whole point of this is that what _you're_ doing is forcing EVERYONE ELSE to manually merge the motd as well. As most of us actually have lives, we are asking those of you who are so scared of what you say that you can't own up to it to either use the lock or not complain. --scotsman \_ Actually, I shouldn't make the assumption that "most of us" have lives. My apologies. --scotsman \_ no one is afraid. they just don't care. it isn't important who said what. and how the hell hard is it to manually merge? diff? patch? c'mon. sometimes I like what someone else has said on a topic better than what I said and don't even bother putting mine in. it goes both ways. its the motd. relax. \_ ok, fine, i'm wrong. except of course this way ppl have to wait for slow typers and stuff like that. \_ read the script. damn.. \_ That probably requires enough clue to understand it. -geordan \_ It's not that hard. \_ I realize; I looked at the script and saw nothing that would hint at a lasting record of my identity that ps -aux|grep motd.public wouldn't give. That' why I was wondering-- op \_ emacs -nw ; C-xC-f /etc/motd.public ; Now no one knows who you are unless they happen to be running lsof for the few usecs when you C-xC-s. \_ U'R $O sUP34 733+ K@n 1 l3AR|V fR0M U 0 733T mA$tUR? \_ He wants to be anonymous, emacs is about as anonymous as you can get \_ then he's _rude_ and anonymous, and will have to deal with me overwriting his drivel because he refuses to use a lock. \_ so he'll deal. its not like half or more of us aren't watching with scripts anyway. emacs is hardly anonymous. I spent about 3 minutes writing a few tiny scripts that lets me figure out who is writing what about 90% of the time. you know what? i find it doesn't matter. since i dont maintain a 'twink points' file and don't take the motd personally or seriously it just doesn't matter. you're all a bunch of two faced liars anyway posting to both sides of many threads. \_ That's a bald lie. \_ No it's not. |
2002/4/26-27 [Computer/SW/Languages/C_Cplusplus] UID:24611 Activity:very high |
4/26 Why when we travel close to speed of light, time starts to slow down and finally stops at v=c? Why time has anything to do with our cell division which controls our aging which also stops at v=c? \_ where's tom? ask ilyas about the stars.... \_ why don't you talk to that guy who always hangs around leconte putting up posters about his "mono-pole" magnet? he'll answer all your questions. \_ time slows down for the other guys. \_ No, the rest of the world speeds up, you don't slow down. \_ go away. Really. \_ obE190 \_ For starter: when you "travel close to c", the speed of light with respect to you is still c. At the same moment the speed of the same instance of light w.r.t. another person who is "stationary" is also c. I vaguely remember that this strange observation is what \_ time dilation effects everything, including the atoms in your spawned Special Relativity. \_ time dilation affects everything, including the atoms in your \_ The above are all completely wrong. As soon as you learn to format to less than 83 columns I'll reveal The Truth. cells. \_ but how cells in your body know time has stopped, this is weird. \_ You can't tell that time has "stopped", in your frame of reference everything will appear normal. An observer in in an inertial frame of reference (one that is at rest or moving with constant velocity with respect to you) will \_ what? no. if that other inertial frame of reference is moving with constant velocity of 0 with respect to you, time will appear the same in both reference frames. \_ There is no way to objectively determine if a frame is "at rest" or if both frames were in motion at some time t with velocity v. Consider the train experiment. The frame of of the observer viewing the train and of the train itself are both moving with constant velocity equal to that of the earth. Although the observer viewing the train considers himself at rest, he really isn't at rest. \_ obviously, but my point was that observers in all reference frames do not think that time has stopped for you. think that time has "stopped" for you. Both of you are correct because of the nature of time and space. \_ hi, you're dumb. \_ Time has not stopped for the person travelling the speed of light. An observer with a different frame of reference will measure time has stopped for the individual travelling the speed of light. \_ Why are you people trying to explain -- oh, never mind. -geordan \_ hi, it's called physics 7c and get it over with. |
2002/4/16 [Computer/SW/Languages/C_Cplusplus, Reference/Tax] UID:24449 Activity:high |
4/15 Is homeowner insurance premium deductable in federal or CA tax form? Thanks. \_ No. \_ Aren't you a little late in asking this question? In case this helps you, the answer is yes, but only if you file schedule C. You have to be self-employed AND have a home office. All the house related expenses related to the home office is tax deductable including repairs, insurance, termite control, etc. The key is schedule C. Don't even try it without a schedule C. You'll get audited. -self-employeed sodan \_ Thanks for the answer. I use TurboTax, so it's pretty easy to add one more entry and re-print the forms before midnight. Too bad I'm not self-employed. \_ so if I file a schedule C (with income from a 1099-MISC) how much can I reasonably use in my itemized deduction? eg, if it was for some computer programming consulting, can I list any computer equipment I bought, and things like bandiwdth costs? - !op \_ yes, computers, internet access, mileage traveling to the job, etc are all deductable. They key is keeping written records and act like you run a business. Separate bank account for the business, keeping expense books, etc. Self-employment is the key to making a lot of money AND paying very little taxes. Hell, I can buy a brand new car and depreciate that as a "company car" if I wanted to. - self-employed soda. \_ well, I guess for next year... but doesn't that mean that you have to file *alot* of other forms? I was reading some of the IRS pubs about various other self-employed-type forms that you need and there seems to be a ton. - aspiring self-employed sodan. |
2002/1/31-2/1 [Computer/SW/Languages/C_Cplusplus, Computer/SW] UID:23736 Activity:high |
1/31 I want to control 16 different LED's by sending in short (~1ms, ~5V) pulses at various times and I need to be able to specify what the times are when the pulse begins (not necessarily the same for each LED). I'd like my computer to control all this, too. Whats the best way to do this? \_ If control doesn't need to be in real time, then a simple way to do it is to write to your parallel port, and build a simple board with ground from the port and have other pins drive the various LEDs. Otherwise get a clock chip and some flipflops and build a logical circuit. Look at your 150 book. \_ Thanks. how do I write to my parallel port then? \_ i realize that stfw is not a nice thing to say, but i have done exactly this before, and there is a document available on the web that has many pages of detailed useful info on the parallel port. I ended up using the assembler command "out" in C. also, don't just drive the LEDs straight from the parallel port, use a buffer of some kind. some kind. oh, yeah. that's the hardware definition of "buffer", not the software definition. high impedance input, low imdance output;otherwise you could fry your parallel card! |
2002/1/18-19 [Computer/SW/Languages/C_Cplusplus] UID:23592 Activity:kinda low |
1/17 In ANSI C, is there a single function call to get the size of a file? I only know of fseek()+ftell(). Thx. \_ Aren't these two not ANSI C either? They're part of the standard C library, but not part of the language itself. And you probably want to look at stat/fstat (depending on whether you've opened the file already). -alexf \_ if you want to be pedantic, yeah, but I think it's safe to assume that the original poster meant, "Using the ANSI C standard library...". \_ while (getc()) i++; /* (heh) */ \_ wrong. EOF != 0, so even after you added the required argument to getc, your loop would either terminate prematurely or loop forever. perhaps you meant: while (getc(fp) != EOF) i++; \_ Oh yeah... it's been several years since I did any C. I'm falling back on "it's the thought that counts!". \_ http://www.eskimo.com/~scs/C-faq/q19.12.html |
2002/1/10 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Editors/Emacs] UID:23524 Activity:high |
1/10 Can people learn not to save over what others have written on the motd? Copy what you have written. Reload the file, and paste it back. Thank you. \_ Learn to pay attention to the lock file that is generated when someone else loads the motd into their editor and wait until they are done. Thank you. \_ Good Point. How do I reload the file in jove without quitting jove? \_ I believe it is C-x C-f, same as in emacs. \- there isnt a revert-buffer func? --psb \_ No. No more so than they can learn to stop censoring other people's posts because they have a different opinion. |
2001/11/28-29 [Computer/SW/Languages/C_Cplusplus, Computer/Theory] UID:23132 Activity:high |
11/28 http://unicoi.kennesaw.edu/~jbamford/greguide/gresample.html Question 8, why isn't the answer C? 1/2 of a binary search (on average) would be (log2 N) - 1, where N is the number of nodes in a complete binary tree right? So C SHOULD be the answer. But for some reason it is not. Help. \_ you should send email to help@csua.berkeley.edu. maybe they \_ you should send email to root@cory.eecs.berkeley.edu. maybe they can help you there. \_ please don't waste our time -kevinm |
2001/11/27-28 [Computer/SW/Languages/C_Cplusplus] UID:23120 Activity:high |
11/27 http://www.CSUA.Berkeley.EDU/~ilyas/problems/hat_problem How many times are they allowed to pass and guess? God ilyas, you really need to clarify your questions. \_ once -!ilyas \_ Once. There is an article in the NY Times about this problem. It's a genuine one, but see if you can get the correct answer. Hint: It's not the trivial solution. -!ilyas \_ Yet another stupid problem. Two of the people pass, the other one will guess. That gives them a 50% chance of winning the price [sic] \_ Try again grasshopper. \_ How about this. It's unlikely that all the hats will be the same color. So if a player sees two hats of the a color, he guesses the other color, otherwise he passes. This increases the chance of winning to 6 in 8. (RRR, BBB are losers, other 6 combos are not.) \_ Congratulations. \_ Yes! I am the smartest man alive! \_ let each person decide for the other person, and then move to the left side of the room for blue hat, right side for red. So person A B C ( a decides for b, b decides for c, c decides for a). If person A is on the right side, b will say he (b) has a red hat.. etc |
11/23 |