c

Why should I setup a plugin interface in c++ instead of c

As a result of my previous questions I asked myself: Is it usefull at all to setup a C++ interface for a plugin system? The following points are speaking against it: No common ABI between different compilers and their versions, no common layout of the objects in memory No direct class export. You have to export factories and destructor...

Hash function for short strings

I want to send function names from a weak embedded system to the host computer for debugging purpose. Since the two are connected by RS232, which is short on bandwidth, I don't want to send the function's name literally. There are some 15 chars long function names, and I sometimes want to send those names at a pretty high rate. The solu...

How Operating System callbacks work.

Follow up question to: This question As described in the linked question, we have an API that uses an event look that polls select() to handle user defined callbacks. I have a class using this like such: class example{ public: example(){ Timer* theTimer1 = Timer::Event::create(timeInterval,&example::FunctionName); ...

Very simple map implemention in C (for caching purpose) ?

I have a program that read urls in a file and does a gethostbyname() on each URL host. This call is quite consuming. I want to cache them. Is there a very simple map-base code snippet in C out there that I could use to do the caching? (I just don't want to reinvent the wheel). It has to have the following points : Open-source with ...

Is it a bad idea to use pointers as loop incrementers instead of the usual "int i"?

An example of this would be: char str[] = "Hello"; int strLength = strlen(str); for ( char * pc = str; pc < str + strLength; pc++) { *pc += 2; } Edit: Accounted for write-protected memory issue. ...

shared objects within a struct: between a calling program and library (in c)

Hi, In a separate library, we have a struct with: typedef struct bsmat{ int m; int *n; double **d; } bs; where **d is a array of pointers to double arrays. bs *new_bs(int n, double **d); There are two use cases: (a) The main application allocates multiple double matrices and calls the library to construct the structure. b = new...

How to get entire input string in Lex and Yacc?

OK, so here is the deal. In my language I have some commands, say XYZ 3 5 GGB 8 9 HDH 8783 33 And in my Lex file XYZ { return XYZ; } GGB { return GGB; } HDH { return HDH; } [0-9]+ { yylval.ival = atoi(yytext); return NUMBER; } \n { return EOL; } In my yacc file start : commands ; commands : command | command EOL co...

Statically and dynamically linking the same library

I have a program that's statically linking to a library (libA.2.0.a) and also dynamically links to another library (libB.so). libB.so also dynamically links to an older version of libA (libA.1.0.so). Is this configuration possible? And if so, how does the system know to use the symbols from libA.2.0.a for my program and the symbols from...

How can Inheritance be modelled using C?

Is it possible to model inheritance using C? How? Sample code will help. Edit: I am looking to inherit both data and methods. Containership alone will not help. Substitutability - using any derived class object where a base class object works - is what I need. ...

read() from stdin doesn't ignore newline

I am using the following conditional statement to read from standard input. if ((n = read(0,buf,sizeof(buf))) != 0) When inputting data from standard input, generally the user presses enter when done. But read() considers '\n' as input too in which case n = 1 and the conditional doesn't evaluate to false. Is there a way to make the co...

How do you test your interrupt handling module?

I've got an interrupt handling module which controls the interrupt controller hardware on an embedded processor. Now I want to add more tests to it. Currently, the tests only tests if nesting of interrupts works by making two software interrupts from within an ISR, one with low priority and one with high priority. How can I test this mod...

how to put an array character into the equation?

i try to put 8 byte character into the equation causing a lot of error,what i'm supposed to do to make sure the equation can take the static value and produce output in the 8 bytes. #include <math.h> #include <hidef.h> /* for EnableInterrupts macro */ #include "derivative.h" /* include peripheral declarations */ void voltage_measure...

How to use struct in c?

This is a code for linked list in c programming language. #include <stdio.h> /* for printf */ #include <stdlib.h> /* for malloc */ typedef struct node { int data; struct node *next; /* pointer to next element in list */ } LLIST; LLIST *list_add(LLIST **p, int i); void list_remove(LLIST **p); LLIST **list_search(LLIST **n,...

Are compund statements (blocks) surrounded by parens expressions in ANSI C?

Browsing the Linux kernel sources I found some piece of code where a block of statements surrounded by parenthesis is treated as a expression a la lisp (or ML), that is, an expression which value is the value of the last statement. For example: int a = ({ int i; int t = 1; for (i = 2; i<5; i++) { t*=i; } t; ...

How to detect which mutex gives largest amount of time to the OS?

How to measure amount of time given by a mutex to the OS? The main goal is to detect a mutex, that blocks threads for largest amount of time. PS: I tried oprofile. It reports 30% of time spent inside vmlinux/.poll_idle. This is unexpected, because the app is designed to take 100% of its core. Therefore, I'm suspecting, that the time is ...

Controlling Forks in C

I have a c file that looks like this: #include <stdio.h> #include <sys/types.h> #include <unistd.h> int main () { pid_t child_pid; printf ("The PID is %d\n", (int) getpid ()); child_pid = fork (); if (child_pid != 0) { printf ("this is the parent process, with PID %d\n", (int)getpid()); prin...

sizeof(int) <= sizeof(long) <= sizeof(long long) always true?

from C standard, int has of at least 16bit, long has of at least 32bit and at least 64bit for long long if any (some platforms may not support). Just wondering if the sentence as title is always true. Thanks. ...

Compiling Small Gcc Project on Windows Using MinGW

Hello, so I've been programming in C++ for almost 2 years now, and the whole while I've had the pleasure of using an IDE (VS) with lovely project settings and automatic linking and the like. I've always stayed away from any external libraries which required me to compile via makefiles, or at least the ones which were meant for linux envi...

Manipulating the search path for include files

My development environment is such that I have some_header.h in /usr/include and in /another/directory. /another/directory contains some header files I need to include in my program, but I want to use some_header.h from /usr/include. When I use gcc ... -I/another/directory gcc uses /another/directory/some_header.h. If I use gcc ...

C : Why do you specify the size when using malloc?

Take the following code : int *p = malloc(2 * sizeof *p); p[0] = 10; //Using the two spaces I p[1] = 20; //allocated with malloc before. p[2] = 30; //Using another space that I didn't allocate for. printf("%d", *(p+1)); //Correctly prints 20 printf("%d", *(p+2)); //Also, correctly prints 30 //although I did...