In C int foo()
and int foo(void)
are different functions. int foo()
accepts an arbitrary number of arguments, while int foo(void)
accepts 0 arguments. In C++ they mean the same thing. I suggest that you use void
consistently when you mean no arguments.
If you have a variable a
, extern int a;
is a way to tell the compiler that a
is a symbol that might be present in a different translation unit (C compiler speak for source file), don’t resolve it until link time. On the other hand, symbols which are function names are anyway resolved at link time. The meaning of a storage class specifier on a function (extern
, static
) only affects its visibility and extern
is the default, so extern
is actually unnecessary.
I suggest removing the extern
, it is extraneous and is usually omitted.
Related Posts:
- difference between
and - warning: initializer element is not computable at load time
- Why do I get “cast from pointer to integer of different size” error?
- Undefined reference to main – collect2: ld returned 1 exit status
- Where is the
header file on Linux? Why can’t I find ? - typedef fixed length array
- How to solve static declaration follows non-static declaration in GCC C code?
- Convert char to int in C and C++
- what is stack smashing (C)?
- warning: incompatible implicit declaration of built-in function ‘xyz’
- Fatal error: iostream: No such file or directory in compiling C program using GCC
- conflicting types error when compiling c program using gcc
- What is a file with extension .a?
- gcc/g++: “No such file or directory”
- waitpid, wnohang, wuntraced. How do I use these
- 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
- Warning: assignment from incompatible pointer type
- Break statement not within loop or switch in C
- How to properly malloc for array of struct in C
- Cache Simulator in C
- C: error: expected ‘)’ before ‘;’ token
- Where is the C auto keyword used?
- make: Nothing to be done for `all’
- (.text+0x20): undefined reference to `main’ and undefined reference to function
- Data argument not used by format strings in C
- execv vs execvp, why just one of them require the exact file’s path?
- 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
- Error: initializer element is not computable at load time
- What is the difference between %f and %lf in C?
- Returning an array using C
- Debug vs Release in CMake
- What is stdin in C language?
- Debug vs Release in CMake
- How to prevent multiple definitions in C?
- How to pass 2D array (matrix) in a function in C?
- error: ‘for’ loop initial declarations are only allowed in C99 mode [duplicate]
- How can you print multiple variables inside a string using printf?
- c – warning: implicit declaration of function ‘printf’
- Flushing buffers in C
- What are 0x01 and 0x80 representative of in C bitwise operations?
- How to make parent wait for all child processes to finish?
- Undefined Reference issues using Semaphores
- What is time(NULL) in C?
- Use of cudamalloc(). Why the double pointer?
- C dynamically growing array
- Why should we check WIFEXITED after wait in order to kill child processes in Linux system call?
- Compiling a .C file: Undefined symbols for architecture x86_64
- How to compile makefile using MinGW?
- Mapping a numeric range onto another
- Why are hexadecimal numbers prefixed with 0x?
- Portable way to check if directory exists [Windows/Linux, C]
- OpenGL — GL_LINE_LOOP —
- too many arguments for format [-Wformat-extra-args]
- How to use EOF to run through a text file in C?
- Incorrect checksum for freed object on malloc
- Valgrind complains with “Invalid write of size 8”
- Removing trailing newline character from fgets() input
- Expression must be a pointer to a complete object type using simple pointer arithmetic
- 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
- gcc: undefined reference to
- Invalid type argument of unary ‘*’ (have ‘int’) Error in C
- Segmentation fault (core dumped) due to fgets – I think
- C subscripted value is neither array nor pointer nor vector when assigning an array element value
- 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
- error: too few arguments to function `printDay’ (C language)
- How to convert integer to char in C?
- What happens during a “relocation has invalid symbol index” error?
- Is there a good Valgrind substitute for Windows?
- Difference between sizeof(char) and sizeof(char *)
- Where to find the complete definition of off_t type?
- struct has no member named
- Difference between “move” and “li” in MIPS assembly language
- printf not printing to screen
- What does this GCC error “… relocation truncated to fit…” mean?
- Initializing array of structures
- Still Reachable Leak detected by Valgrind
- How to empty a char array?
- Assembly x86 – “leave” Instruction
- 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 []
- Is there a way to have printf() properly print out an array (of floats, say)?
- error: unknown type name ‘bool’
- 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?
- Proper way to empty a C-String