No, you cannot define a function within a struct
in C.
You can have a function pointer in a struct
though but having a function pointer is very different from a member function in C++, namely there is no implicit this
pointer to the containing struct
instance.
Contrived example (online demo http://ideone.com/kyHlQ):
#include <stdio.h> #include <string.h> #include <stdlib.h> struct point { int x; int y; void (*print)(const struct point*); }; void print_x(const struct point* p) { printf("x=%d\n", p->x); } void print_y(const struct point* p) { printf("y=%d\n", p->y); } int main(void) { struct point p1 = { 2, 4, print_x }; struct point p2 = { 7, 1, print_y }; p1.print(&p1); p2.print(&p2); return 0; }
Related Posts:
- struct has no member named
- Structure padding and packing
- error: expected primary-expression before ‘)’ token (C)
- How do you pass a function as a parameter in C?
- How to initialize array to 0 in C?
- How to do scanf for single char in C
- Sign extend a nine-bit number in C
- Break statement not within loop or switch in C
- How to properly malloc for array of struct in C
- Cache Simulator in C
- make: Nothing to be done for `all’
- Data argument not used by format strings in C
- expected expression before ‘{‘ token
- Setting std=c99 flag in GCC
- C Vector/ArrayList/LinkedList
- Convert char array to a int number in C
- Bind failed: Address already in use
- What is the difference between %f and %lf in C?
- warning: initializer element is not computable at load time
- What is stdin in C language?
- How to pass 2D array (matrix) in a function in C?
- error: ‘for’ loop initial declarations are only allowed in C99 mode [duplicate]
- c – warning: implicit declaration of function ‘printf’
- Flushing buffers in C
- How to compile makefile using MinGW?
- Portable way to check if directory exists [Windows/Linux, C]
- too many arguments for format [-Wformat-extra-args]
- Incorrect checksum for freed object on malloc
- How to copy a char array in C?
- Simple way to check if a string contains another string in C?
- What does “request for member ‘*******’ in something not a structure or union” mean?
- cast to pointer from integer of different size, pthread code
- Segmentation fault (core dumped) due to fgets – I think
- What does “request for member ‘*******’ in something not a structure or union” mean?
- Unknown ending signal when using debugger gdb
- Valgrind: invalid read of size 4 -> sigsegv, works fine without valgrind and in visual studio
- How to convert integer to char in C?
- Is there a good Valgrind substitute for Windows?
- Where to find the complete definition of off_t type?
- Difference between “move” and “li” in MIPS assembly language
- printf not printing to screen
- Initializing array of structures
- How to return a struct from a function in C++?
- Still Reachable Leak detected by Valgrind
- What is the difference between array and enum in C ?
- How can one see content of stack with GDB?
- What is signed integer overflow?
- What does the term “empty loop” refer to exactly in C and C++?
- When to use const char * and when to use const char []
- What do numbers using 0x notation mean?
- What integer hash function are good that accepts an integer hash key?
- Can I create an Array of Char pointers in C?
- Does stack grow upward or downward?
- Convert Little Endian to Big Endian
- X86 assembly – Handling the IDIV instruction
- error C2371: ‘functionname’ redefinition: different basic types
- Pause screen at program completion in C
- How to write to a file using open() and printf()?
- note: previous implicit declaration of ‘point_forward’ was here
- What exactly is meant by “de-referencing a NULL pointer”?
- Difference between fgets and fscanf?
- What is the difference between %g and %f in C?
- getc() vs fgetc() – What are the major differences?
- Can’t understand the working of getint() in C as per K&R
- Lua – Number to string behaviour
- Parameter name omitted error?
- Reading in double values with scanf in c
- Realloc Invalid Pointer in C
- What tools are there for functional programming in C?
- typedef fixed length array
- “-bash: gcc: command not found” using cygwin when compiling c?
- In C, what exactly happens when you pass a NULL pointer to strcmp()?
- How to format strings using printf() to get equal length in the output
- In C, what exactly happens when you pass a NULL pointer to strcmp()?
- What are the differences between if, else, and else if?
- Example of waitpid() in use?
- strtok segmentation fault
- Invalid write of size 1
- How to solve static declaration follows non-static declaration in GCC C code?
- realloc(): invalid next size when reallocating to make space for strcat on char *
- Constructor for structs in C
- C Error: declaration shadows a local variable — Won’t let me repeatedly replace the value of my float variable
- Can a function return two values?
- C: warning: excess elements in array initializer; near initialization for ‘xxx’ ; expects ‘char *’, but has type ‘int’
- MIPS to C Translation
- Pointer to 2D arrays in C
- How to know what the ‘errno’ means?
- Printf was not declared in this scope
- How to free memory from char array in C
- Can I get Unix’s pthread.h to compile in Windows?
- Initializing 2D char array in C
- Pointer to a string in C?
- Process exited with return value 3221225477
- gdb: No symbol “i” in current context
- Cross Platform C library for GUI Apps?
- Pre increment vs Post increment in array
- %p Format specifier in c
- “Nothing to be done for makefile” message
- Convert Char to String in C
- What is the difference between signed and unsigned int