comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

Post by scs » Tue, 16 Sep 2003 19:00:08


rchive-name: C-faq/abridged
Comp-lang-c-archive-name: C-FAQ-list.abridged
URL: http://www.eskimo.com/~scs/C-faq/top.html

[Last modified February 7, 1999 by scs.]

This article is Copyright 1990-1999 by Steve Summit. Content from the
book _C Programming FAQs: Frequently Asked Questions_ is made available
here by permission of the author and the publisher as a service to the
community. It is intended to complement the use of the published text
and is protected by international copyright laws. The content is made
available here and may be accessed freely for personal use but may not
be republished without permission.

This article contains minimal answers to the comp.lang.c frequently-
asked questions list. More detailed explanations and references can be
found in the long version (posted on the first of each month, or see
question 20.40 for availability), and in the web version at http://www.eskimo.com/~scs/C-faq/top.html
, and in the book _C Programming FAQs: Frequently Asked Questions_
(Addison-Wesley, 1996, ISBN 0-201-84519-9).

Section 1. Declarations and Initializations

1.1: How do you decide which integer type to use?

A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.

1.4: What should the 64-bit type on a machine that can support it?

A: C9X specifies long long.

1.7: What's the best way to declare and define global variables?

A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.

1.11: What does extern mean in a function declaration?

A: Nothing, really; the keyword extern is optional here.

1.12: What's the auto keyword good for?

A: Nothing.

1.14: I can't seem to define a linked list node which contains a
pointer to itself.

A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.

1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to characters?

A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.

1.22: How can I declare a function that returns a pointer to a
function of its own type?

A: You can't quite do it directly. Use a cast, or wrap a struct
around the pointer and return that.

1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.

A: Calling an undeclared function declares it implicitly as
returning int.

1.25b: What's the right declaration for main()?

A: See questions 11.12a to 11.15.

1.30: What am I allowed to assume about the initial values
of variables which are not explicitly initialized?

A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).

1.31: Why can't I initialize a local array with a string?

A: Perhaps you have a pre-ANSI compiler.

1.31b: What's wrong with "char *p = malloc(10);" ?

A: Function calls are not allowed in initializers for global or
static variables.

1.32: What is the difference
 
 
 

comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

Post by scs » Sun, 02 Nov 2003 20:00:20

rchive-name: C-faq/abridged
Comp-lang-c-archive-name: C-FAQ-list.abridged
URL: http://www.eskimo.com/~scs/C-faq/top.html

[Last modified February 7, 1999 by scs.]

This article is Copyright 1990-1999 by Steve Summit. Content from the
book _C Programming FAQs: Frequently Asked Questions_ is made available
here by permission of the author and the publisher as a service to the
community. It is intended to complement the use of the published text
and is protected by international copyright laws. The content is made
available here and may be accessed freely for personal use but may not
be republished without permission.

This article contains minimal answers to the comp.lang.c frequently-
asked questions list. More detailed explanations and references can be
found in the long version (see question 20.40 for availability), and
in the web version at http://www.eskimo.com/~scs/C-faq/top.html ,
and in the book _C Programming FAQs: Frequently Asked Questions_
(Addison-Wesley, 1996, ISBN 0-201-84519-9).


Section 1. Declarations and Initializations

1.1: How do you decide which integer type to use?

A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.

1.4: What should the 64-bit type on a machine that can support it?

A: C9X specifies long long.

1.7: What's the best way to declare and define global variables?

A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.

1.11: What does extern mean in a function declaration?

A: Nothing, really; the keyword extern is optional here.

1.12: What's the auto keyword good for?

A: Nothing.

1.14: I can't seem to define a linked list node which contains a
pointer to itself.

A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.

1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to characters?

A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.

1.22: How can I declare a function that returns a pointer to a
function of its own type?

A: You can't quite do it directly. Use a cast, or wrap a struct
around the pointer and return that.

1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.

A: Calling an undeclared function declares it implicitly as
returning int.

1.25b: What's the right declaration for main()?

A: See questions 11.12a to 11.15.

1.30: What am I allowed to assume about the initial values
of variables which are not explicitly initialized?

A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).

1.31: Why can't I initialize a local array with a string?

A: Perhaps you have a pre-ANSI compiler.

1.31b: What's wrong with "char *p = malloc(10);" ?

A: Function calls are not allowed in initializers for global or
static variables.

1.32: What is the difference between char a[] = "string"; and
ch
 
 
 

comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

Post by scs » Sun, 16 Nov 2003 20:00:06

rchive-name: C-faq/abridged
Comp-lang-c-archive-name: C-FAQ-list.abridged
URL: http://www.eskimo.com/~scs/C-faq/top.html

[Last modified February 7, 1999 by scs.]

This article is Copyright 1990-1999 by Steve Summit. Content from the
book _C Programming FAQs: Frequently Asked Questions_ is made available
here by permission of the author and the publisher as a service to the
community. It is intended to complement the use of the published text
and is protected by international copyright laws. The content is made
available here and may be accessed freely for personal use but may not
be republished without permission.

This article contains minimal answers to the comp.lang.c frequently-
asked questions list. More detailed explanations and references can be
found in the long version (posted on the first of each month, or see
question 20.40 for availability), and in the web version at http://www.eskimo.com/~scs/C-faq/top.html
, and in the book _C Programming FAQs: Frequently Asked Questions_
(Addison-Wesley, 1996, ISBN 0-201-84519-9).

Section 1. Declarations and Initializations

1.1: How do you decide which integer type to use?

A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.

1.4: What should the 64-bit type on a machine that can support it?

A: C9X specifies long long.

1.7: What's the best way to declare and define global variables?

A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.

1.11: What does extern mean in a function declaration?

A: Nothing, really; the keyword extern is optional here.

1.12: What's the auto keyword good for?

A: Nothing.

1.14: I can't seem to define a linked list node which contains a
pointer to itself.

A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.

1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to characters?

A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.

1.22: How can I declare a function that returns a pointer to a
function of its own type?

A: You can't quite do it directly. Use a cast, or wrap a struct
around the pointer and return that.

1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.

A: Calling an undeclared function declares it implicitly as
returning int.

1.25b: What's the right declaration for main()?

A: See questions 11.12a to 11.15.

1.30: What am I allowed to assume about the initial values
of variables which are not explicitly initialized?

A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).

1.31: Why can't I initialize a local array with a string?

A: Perhaps you have a pre-ANSI compiler.

1.31b: What's wrong with "char *p = malloc(10);" ?

A: Function calls are not allowed in initializers for global or
static variables.

1.32: What is the difference
 
 
 

comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

Post by scs » Tue, 02 Dec 2003 20:00:13

rchive-name: C-faq/abridged
Comp-lang-c-archive-name: C-FAQ-list.abridged
URL: http://www.eskimo.com/~scs/C-faq/top.html

[Last modified February 7, 1999 by scs.]

This article is Copyright 1990-1999 by Steve Summit. Content from the
book _C Programming FAQs: Frequently Asked Questions_ is made available
here by permission of the author and the publisher as a service to the
community. It is intended to complement the use of the published text
and is protected by international copyright laws. The content is made
available here and may be accessed freely for personal use but may not
be republished without permission.

This article contains minimal answers to the comp.lang.c frequently-
asked questions list. More detailed explanations and references can be
found in the long version (see question 20.40 for availability), and
in the web version at http://www.eskimo.com/~scs/C-faq/top.html ,
and in the book _C Programming FAQs: Frequently Asked Questions_
(Addison-Wesley, 1996, ISBN 0-201-84519-9).


Section 1. Declarations and Initializations

1.1: How do you decide which integer type to use?

A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.

1.4: What should the 64-bit type on a machine that can support it?

A: C9X specifies long long.

1.7: What's the best way to declare and define global variables?

A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.

1.11: What does extern mean in a function declaration?

A: Nothing, really; the keyword extern is optional here.

1.12: What's the auto keyword good for?

A: Nothing.

1.14: I can't seem to define a linked list node which contains a
pointer to itself.

A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.

1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to characters?

A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.

1.22: How can I declare a function that returns a pointer to a
function of its own type?

A: You can't quite do it directly. Use a cast, or wrap a struct
around the pointer and return that.

1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.

A: Calling an undeclared function declares it implicitly as
returning int.

1.25b: What's the right declaration for main()?

A: See questions 11.12a to 11.15.

1.30: What am I allowed to assume about the initial values
of variables which are not explicitly initialized?

A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).

1.31: Why can't I initialize a local array with a string?

A: Perhaps you have a pre-ANSI compiler.

1.31b: What's wrong with "char *p = malloc(10);" ?

A: Function calls are not allowed in initializers for global or
static variables.

1.32: What is the difference between char a[] = "string"; and
ch
 
 
 

comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

Post by scs » Tue, 16 Dec 2003 20:00:18

rchive-name: C-faq/abridged
Comp-lang-c-archive-name: C-FAQ-list.abridged
URL: http://www.eskimo.com/~scs/C-faq/top.html

[Last modified February 7, 1999 by scs.]

This article is Copyright 1990-1999 by Steve Summit. Content from the
book _C Programming FAQs: Frequently Asked Questions_ is made available
here by permission of the author and the publisher as a service to the
community. It is intended to complement the use of the published text
and is protected by international copyright laws. The content is made
available here and may be accessed freely for personal use but may not
be republished without permission.

This article contains minimal answers to the comp.lang.c frequently-
asked questions list. More detailed explanations and references can be
found in the long version (posted on the first of each month, or see
question 20.40 for availability), and in the web version at http://www.eskimo.com/~scs/C-faq/top.html
, and in the book _C Programming FAQs: Frequently Asked Questions_
(Addison-Wesley, 1996, ISBN 0-201-84519-9).

Section 1. Declarations and Initializations

1.1: How do you decide which integer type to use?

A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.

1.4: What should the 64-bit type on a machine that can support it?

A: C9X specifies long long.

1.7: What's the best way to declare and define global variables?

A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.

1.11: What does extern mean in a function declaration?

A: Nothing, really; the keyword extern is optional here.

1.12: What's the auto keyword good for?

A: Nothing.

1.14: I can't seem to define a linked list node which contains a
pointer to itself.

A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.

1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to characters?

A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.

1.22: How can I declare a function that returns a pointer to a
function of its own type?

A: You can't quite do it directly. Use a cast, or wrap a struct
around the pointer and return that.

1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.

A: Calling an undeclared function declares it implicitly as
returning int.

1.25b: What's the right declaration for main()?

A: See questions 11.12a to 11.15.

1.30: What am I allowed to assume about the initial values
of variables which are not explicitly initialized?

A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).

1.31: Why can't I initialize a local array with a string?

A: Perhaps you have a pre-ANSI compiler.

1.31b: What's wrong with "char *p = malloc(10);" ?

A: Function calls are not allowed in initializers for global or
static variables.

1.32: What is the difference
 
 
 

comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

Post by scs » Fri, 02 Jan 2004 20:00:15

rchive-name: C-faq/abridged
Comp-lang-c-archive-name: C-FAQ-list.abridged
URL: http://www.eskimo.com/~scs/C-faq/top.html

[Last modified February 7, 1999 by scs.]

This article is Copyright 1990-1999 by Steve Summit. Content from the
book _C Programming FAQs: Frequently Asked Questions_ is made available
here by permission of the author and the publisher as a service to the
community. It is intended to complement the use of the published text
and is protected by international copyright laws. The content is made
available here and may be accessed freely for personal use but may not
be republished without permission.

This article contains minimal answers to the comp.lang.c frequently-
asked questions list. More detailed explanations and references can be
found in the long version (see question 20.40 for availability), and
in the web version at http://www.eskimo.com/~scs/C-faq/top.html ,
and in the book _C Programming FAQs: Frequently Asked Questions_
(Addison-Wesley, 1996, ISBN 0-201-84519-9).


Section 1. Declarations and Initializations

1.1: How do you decide which integer type to use?

A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.

1.4: What should the 64-bit type on a machine that can support it?

A: C9X specifies long long.

1.7: What's the best way to declare and define global variables?

A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.

1.11: What does extern mean in a function declaration?

A: Nothing, really; the keyword extern is optional here.

1.12: What's the auto keyword good for?

A: Nothing.

1.14: I can't seem to define a linked list node which contains a
pointer to itself.

A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.

1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to characters?

A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.

1.22: How can I declare a function that returns a pointer to a
function of its own type?

A: You can't quite do it directly. Use a cast, or wrap a struct
around the pointer and return that.

1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.

A: Calling an undeclared function declares it implicitly as
returning int.

1.25b: What's the right declaration for main()?

A: See questions 11.12a to 11.15.

1.30: What am I allowed to assume about the initial values
of variables which are not explicitly initialized?

A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).

1.31: Why can't I initialize a local array with a string?

A: Perhaps you have a pre-ANSI compiler.

1.31b: What's wrong with "char *p = malloc(10);" ?

A: Function calls are not allowed in initializers for global or
static variables.

1.32: What is the difference between char a[] = "string"; and
ch
 
 
 

comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

Post by scs » Fri, 16 Jan 2004 20:00:11

rchive-name: C-faq/abridged
Comp-lang-c-archive-name: C-FAQ-list.abridged
URL: http://www.eskimo.com/~scs/C-faq/top.html

[Last modified February 7, 1999 by scs.]

This article is Copyright 1990-1999 by Steve Summit. Content from the
book _C Programming FAQs: Frequently Asked Questions_ is made available
here by permission of the author and the publisher as a service to the
community. It is intended to complement the use of the published text
and is protected by international copyright laws. The content is made
available here and may be accessed freely for personal use but may not
be republished without permission.

This article contains minimal answers to the comp.lang.c frequently-
asked questions list. More detailed explanations and references can be
found in the long version (posted on the first of each month, or see
question 20.40 for availability), and in the web version at http://www.eskimo.com/~scs/C-faq/top.html
, and in the book _C Programming FAQs: Frequently Asked Questions_
(Addison-Wesley, 1996, ISBN 0-201-84519-9).

Section 1. Declarations and Initializations

1.1: How do you decide which integer type to use?

A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.

1.4: What should the 64-bit type on a machine that can support it?

A: C9X specifies long long.

1.7: What's the best way to declare and define global variables?

A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.

1.11: What does extern mean in a function declaration?

A: Nothing, really; the keyword extern is optional here.

1.12: What's the auto keyword good for?

A: Nothing.

1.14: I can't seem to define a linked list node which contains a
pointer to itself.

A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.

1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to characters?

A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.

1.22: How can I declare a function that returns a pointer to a
function of its own type?

A: You can't quite do it directly. Use a cast, or wrap a struct
around the pointer and return that.

1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.

A: Calling an undeclared function declares it implicitly as
returning int.

1.25b: What's the right declaration for main()?

A: See questions 11.12a to 11.15.

1.30: What am I allowed to assume about the initial values
of variables which are not explicitly initialized?

A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).

1.31: Why can't I initialize a local array with a string?

A: Perhaps you have a pre-ANSI compiler.

1.31b: What's wrong with "char *p = malloc(10);" ?

A: Function calls are not allowed in initializers for global or
static variables.

1.32: What is the difference
 
 
 

comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

Post by scs » Mon, 02 Feb 2004 20:00:16

rchive-name: C-faq/abridged
Comp-lang-c-archive-name: C-FAQ-list.abridged
URL: http://www.eskimo.com/~scs/C-faq/top.html

[Last modified February 7, 1999 by scs.]

This article is Copyright 1990-1999 by Steve Summit. Content from the
book _C Programming FAQs: Frequently Asked Questions_ is made available
here by permission of the author and the publisher as a service to the
community. It is intended to complement the use of the published text
and is protected by international copyright laws. The content is made
available here and may be accessed freely for personal use but may not
be republished without permission.

This article contains minimal answers to the comp.lang.c frequently-
asked questions list. More detailed explanations and references can be
found in the long version (see question 20.40 for availability), and
in the web version at http://www.eskimo.com/~scs/C-faq/top.html ,
and in the book _C Programming FAQs: Frequently Asked Questions_
(Addison-Wesley, 1996, ISBN 0-201-84519-9).


Section 1. Declarations and Initializations

1.1: How do you decide which integer type to use?

A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.

1.4: What should the 64-bit type on a machine that can support it?

A: C9X specifies long long.

1.7: What's the best way to declare and define global variables?

A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.

1.11: What does extern mean in a function declaration?

A: Nothing, really; the keyword extern is optional here.

1.12: What's the auto keyword good for?

A: Nothing.

1.14: I can't seem to define a linked list node which contains a
pointer to itself.

A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.

1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to characters?

A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.

1.22: How can I declare a function that returns a pointer to a
function of its own type?

A: You can't quite do it directly. Use a cast, or wrap a struct
around the pointer and return that.

1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.

A: Calling an undeclared function declares it implicitly as
returning int.

1.25b: What's the right declaration for main()?

A: See questions 11.12a to 11.15.

1.30: What am I allowed to assume about the initial values
of variables which are not explicitly initialized?

A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).

1.31: Why can't I initialize a local array with a string?

A: Perhaps you have a pre-ANSI compiler.

1.31b: What's wrong with "char *p = malloc(10);" ?

A: Function calls are not allowed in initializers for global or
static variables.

1.32: What is the difference between char a[] = "string"; and
ch
 
 
 

comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

Post by scs » Mon, 16 Aug 2004 19:00:08

rchive-name: C-faq/abridged
Comp-lang-c-archive-name: C-FAQ-list.abridged
URL: http://www.eskimo.com/~scs/C-faq/top.html

[Last modified July 3, 2004 by scs.]

This article is Copyright 1990-2004 by Steve Summit. Content from the
book _C Programming FAQs: Frequently Asked Questions_ is made available
here by permission of the author and the publisher as a service to the
community. It is intended to complement the use of the published text
and is protected by international copyright laws. The on-line content
may be accessed freely for personal use but may not be republished
without permission.

This article contains minimal answers to the comp.lang.c frequently-
asked questions list. More detailed explanations and references can be
found in the long version (posted on the first of each month, or see
question 20.40 for availability, or ftp to rtfm.mit.edu, or send the
mail message "help" to mail- XXXX@XXXXX.COM ). Or, see the web
version at http://www.eskimo.com/~scs/C-faq/top.html , or the book
_C Programming FAQs: Frequently Asked Questions_ (Addison-Wesley,
1996, ISBN
0-201-84519-9).


Section 1. Declarations and Initializations

1.1: How should I decide which integer type to use?

A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.

1.4: What should the 64-bit type be on a machine that can support it?

A: C99 specifies long long.

1.7: What's the best way to declare and define global variables?

A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.

1.11: What does extern mean in a function declaration?

A: Nothing, really; the keyword extern is optional here.

1.12: What's the auto keyword good for?

A: Nothing.

1.14: I can't seem to define a linked list node which contains a
pointer to itself.

A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.

1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to char?

A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.

1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.

A: Calling an undeclared function declares it implicitly as
returning int.

1.25b: What's the right declaration for main()?

A: See questions 11.12a through 11.15.

1.30: What am I allowed to assume about the initial values of
variables which are not explicitly initialized?

A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).

1.31: Why can't I initialize a local array with a string?

A: Perhaps you have a pre-ANSI compiler.

1.31b: What's wrong with "char *p = malloc(10);" ?

A: Function calls are not allowed in initializers for global or
static variables.

1.32: What is the difference between char a[] = "string"; and
char *p = "string"; ?

A: The first declares an initialized and modifiable array; the
second de
 
 
 

comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

Post by scs » Thu, 16 Sep 2004 19:00:07

rchive-name: C-faq/abridged
Comp-lang-c-archive-name: C-FAQ-list.abridged
URL: http://www.eskimo.com/~scs/C-faq/top.html

[Last modified July 3, 2004 by scs.]

This article is Copyright 1990-2004 by Steve Summit. Content from the
book _C Programming FAQs: Frequently Asked Questions_ is made available
here by permission of the author and the publisher as a service to the
community. It is intended to complement the use of the published text
and is protected by international copyright laws. The on-line content
may be accessed freely for personal use but may not be republished
without permission.

This article contains minimal answers to the comp.lang.c frequently-
asked questions list. More detailed explanations and references can be
found in the long version (posted on the first of each month, or see
question 20.40 for availability, or ftp to rtfm.mit.edu, or send the
mail message "help" to mail- XXXX@XXXXX.COM ). Or, see the web
version at http://www.eskimo.com/~scs/C-faq/top.html , or the book
_C Programming FAQs: Frequently Asked Questions_ (Addison-Wesley,
1996, ISBN
0-201-84519-9).


Section 1. Declarations and Initializations

1.1: How should I decide which integer type to use?

A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.

1.4: What should the 64-bit type be on a machine that can support it?

A: C99 specifies long long.

1.7: What's the best way to declare and define global variables?

A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.

1.11: What does extern mean in a function declaration?

A: Nothing, really; the keyword extern is optional here.

1.12: What's the auto keyword good for?

A: Nothing.

1.14: I can't seem to define a linked list node which contains a
pointer to itself.

A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.

1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to char?

A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.

1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.

A: Calling an undeclared function declares it implicitly as
returning int.

1.25b: What's the right declaration for main()?

A: See questions 11.12a through 11.15.

1.30: What am I allowed to assume about the initial values of
variables which are not explicitly initialized?

A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).

1.31: Why can't I initialize a local array with a string?

A: Perhaps you have a pre-ANSI compiler.

1.31b: What's wrong with "char *p = malloc(10);" ?

A: Function calls are not allowed in initializers for global or
static variables.

1.32: What is the difference between char a[] = "string"; and
char *p = "string"; ?

A: The first declares an initialized and modifiable array; the
second de
 
 
 

comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

Post by scs » Sat, 16 Oct 2004 19:00:04

rchive-name: C-faq/abridged
Comp-lang-c-archive-name: C-FAQ-list.abridged
URL: http://www.eskimo.com/~scs/C-faq/top.html

[Last modified July 3, 2004 by scs.]

This article is Copyright 1990-2004 by Steve Summit. Content from the
book _C Programming FAQs: Frequently Asked Questions_ is made available
here by permission of the author and the publisher as a service to the
community. It is intended to complement the use of the published text
and is protected by international copyright laws. The on-line content
may be accessed freely for personal use but may not be republished
without permission.

This article contains minimal answers to the comp.lang.c frequently-
asked questions list. More detailed explanations and references can be
found in the long version (posted on the first of each month, or see
question 20.40 for availability, or ftp to rtfm.mit.edu, or send the
mail message "help" to mail- XXXX@XXXXX.COM ). Or, see the web
version at http://www.eskimo.com/~scs/C-faq/top.html , or the book
_C Programming FAQs: Frequently Asked Questions_ (Addison-Wesley,
1996, ISBN
0-201-84519-9).


Section 1. Declarations and Initializations

1.1: How should I decide which integer type to use?

A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.

1.4: What should the 64-bit type be on a machine that can support it?

A: C99 specifies long long.

1.7: What's the best way to declare and define global variables?

A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.

1.11: What does extern mean in a function declaration?

A: Nothing, really; the keyword extern is optional here.

1.12: What's the auto keyword good for?

A: Nothing.

1.14: I can't seem to define a linked list node which contains a
pointer to itself.

A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.

1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to char?

A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.

1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.

A: Calling an undeclared function declares it implicitly as
returning int.

1.25b: What's the right declaration for main()?

A: See questions 11.12a through 11.15.

1.30: What am I allowed to assume about the initial values of
variables which are not explicitly initialized?

A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).

1.31: Why can't I initialize a local array with a string?

A: Perhaps you have a pre-ANSI compiler.

1.31b: What's wrong with "char *p = malloc(10);" ?

A: Function calls are not allowed in initializers for global or
static variables.

1.32: What is the difference between char a[] = "string"; and
char *p = "string"; ?

A: The first declares an initialized and modifiable array; the
second de
 
 
 

comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

Post by scs » Tue, 02 Nov 2004 20:00:25

rchive-name: C-faq/abridged
Comp-lang-c-archive-name: C-FAQ-list.abridged
URL: http://www.eskimo.com/~scs/C-faq/top.html

[Last modified July 3, 2004 by scs.]

This article is Copyright 1990-2004 by Steve Summit. Content from the
book _C Programming FAQs: Frequently Asked Questions_ is made available
here by permission of the author and the publisher as a service to the
community. It is intended to complement the use of the published text
and is protected by international copyright laws. The on-line content
may be accessed freely for personal use but may not be republished
without permission.

This article contains minimal answers to the comp.lang.c frequently-
asked questions list. More detailed explanations and references can be
found in the long version (see question 20.40 for availability, or ftp
to rtfm.mit.edu, or send the mail message "help" to mail-
XXXX@XXXXX.COM ). Or, see the web version at
http://www.eskimo.com/~scs/C-faq/top.html , or the book _C Programming
FAQs: Frequently Asked Questions_ (Addison-Wesley, 1996, ISBN
0-201-84519-9).


Section 1. Declarations and Initializations

1.1: How should I decide which integer type to use?

A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.

1.4: What should the 64-bit type be on a machine that can support it?

A: C99 specifies long long.

1.7: What's the best way to declare and define global variables?

A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.

1.11: What does extern mean in a function declaration?

A: Nothing, really; the keyword extern is optional here.

1.12: What's the auto keyword good for?

A: Nothing.

1.14: I can't seem to define a linked list node which contains a
pointer to itself.

A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.

1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to char?

A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.

1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.

A: Calling an undeclared function declares it implicitly as
returning int.

1.25b: What's the right declaration for main()?

A: See questions 11.12a through 11.15.

1.30: What am I allowed to assume about the initial values of
variables which are not explicitly initialized?

A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).

1.31: Why can't I initialize a local array with a string?

A: Perhaps you have a pre-ANSI compiler.

1.31b: What's wrong with "char *p = malloc(10);" ?

A: Function calls are not allowed in initializers for global or
static variables.

1.32: What is the difference between char a[] = "string"; and
char *p = "string"; ?

A: The first declares an initialized and modifiable array; the
second declares a pointer initialized to a not-n
 
 
 

comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

Post by scs » Tue, 16 Nov 2004 20:00:06

rchive-name: C-faq/abridged
Comp-lang-c-archive-name: C-FAQ-list.abridged
URL: http://www.eskimo.com/~scs/C-faq/top.html

[Last modified July 3, 2004 by scs.]

This article is Copyright 1990-2004 by Steve Summit. Content from the
book _C Programming FAQs: Frequently Asked Questions_ is made available
here by permission of the author and the publisher as a service to the
community. It is intended to complement the use of the published text
and is protected by international copyright laws. The on-line content
may be accessed freely for personal use but may not be republished
without permission.

This article contains minimal answers to the comp.lang.c frequently-
asked questions list. More detailed explanations and references can be
found in the long version (posted on the first of each month, or see
question 20.40 for availability, or ftp to rtfm.mit.edu, or send the
mail message "help" to mail- XXXX@XXXXX.COM ). Or, see the web
version at http://www.eskimo.com/~scs/C-faq/top.html , or the book
_C Programming FAQs: Frequently Asked Questions_ (Addison-Wesley,
1996, ISBN
0-201-84519-9).


Section 1. Declarations and Initializations

1.1: How should I decide which integer type to use?

A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.

1.4: What should the 64-bit type be on a machine that can support it?

A: C99 specifies long long.

1.7: What's the best way to declare and define global variables?

A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.

1.11: What does extern mean in a function declaration?

A: Nothing, really; the keyword extern is optional here.

1.12: What's the auto keyword good for?

A: Nothing.

1.14: I can't seem to define a linked list node which contains a
pointer to itself.

A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.

1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to char?

A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.

1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.

A: Calling an undeclared function declares it implicitly as
returning int.

1.25b: What's the right declaration for main()?

A: See questions 11.12a through 11.15.

1.30: What am I allowed to assume about the initial values of
variables which are not explicitly initialized?

A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).

1.31: Why can't I initialize a local array with a string?

A: Perhaps you have a pre-ANSI compiler.

1.31b: What's wrong with "char *p = malloc(10);" ?

A: Function calls are not allowed in initializers for global or
static variables.

1.32: What is the difference between char a[] = "string"; and
char *p = "string"; ?

A: The first declares an initialized and modifiable array; the
second de
 
 
 

comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

Post by scs » Thu, 16 Dec 2004 20:00:09

rchive-name: C-faq/abridged
Comp-lang-c-archive-name: C-FAQ-list.abridged
URL: http://www.eskimo.com/~scs/C-faq/top.html

[Last modified July 3, 2004 by scs.]

This article is Copyright 1990-2004 by Steve Summit. Content from the
book _C Programming FAQs: Frequently Asked Questions_ is made available
here by permission of the author and the publisher as a service to the
community. It is intended to complement the use of the published text
and is protected by international copyright laws. The on-line content
may be accessed freely for personal use but may not be republished
without permission.

This article contains minimal answers to the comp.lang.c frequently-
asked questions list. More detailed explanations and references can be
found in the long version (posted on the first of each month, or see
question 20.40 for availability, or ftp to rtfm.mit.edu, or send the
mail message "help" to mail- XXXX@XXXXX.COM ). Or, see the web
version at http://www.eskimo.com/~scs/C-faq/top.html , or the book
_C Programming FAQs: Frequently Asked Questions_ (Addison-Wesley,
1996, ISBN
0-201-84519-9).


Section 1. Declarations and Initializations

1.1: How should I decide which integer type to use?

A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.

1.4: What should the 64-bit type be on a machine that can support it?

A: C99 specifies long long.

1.7: What's the best way to declare and define global variables?

A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.

1.11: What does extern mean in a function declaration?

A: Nothing, really; the keyword extern is optional here.

1.12: What's the auto keyword good for?

A: Nothing.

1.14: I can't seem to define a linked list node which contains a
pointer to itself.

A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.

1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to char?

A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.

1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.

A: Calling an undeclared function declares it implicitly as
returning int.

1.25b: What's the right declaration for main()?

A: See questions 11.12a through 11.15.

1.30: What am I allowed to assume about the initial values of
variables which are not explicitly initialized?

A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).

1.31: Why can't I initialize a local array with a string?

A: Perhaps you have a pre-ANSI compiler.

1.31b: What's wrong with "char *p = malloc(10);" ?

A: Function calls are not allowed in initializers for global or
static variables.

1.32: What is the difference between char a[] = "string"; and
char *p = "string"; ?

A: The first declares an initialized and modifiable array; the
second de
 
 
 

comp.lang.c Answers (Abridged) to Frequently Asked Questions (FAQ)

Post by scs » Sun, 16 Jan 2005 20:00:07

rchive-name: C-faq/abridged
Comp-lang-c-archive-name: C-FAQ-list.abridged
URL: http://www.eskimo.com/~scs/C-faq/top.html

[Last modified July 3, 2004 by scs.]

This article is Copyright 1990-2004 by Steve Summit. Content from the
book _C Programming FAQs: Frequently Asked Questions_ is made available
here by permission of the author and the publisher as a service to the
community. It is intended to complement the use of the published text
and is protected by international copyright laws. The on-line content
may be accessed freely for personal use but may not be republished
without permission.

This article contains minimal answers to the comp.lang.c frequently-
asked questions list. More detailed explanations and references can be
found in the long version (posted on the first of each month, or see
question 20.40 for availability, or ftp to rtfm.mit.edu, or send the
mail message "help" to mail- XXXX@XXXXX.COM ). Or, see the web
version at http://www.eskimo.com/~scs/C-faq/top.html , or the book
_C Programming FAQs: Frequently Asked Questions_ (Addison-Wesley,
1996, ISBN
0-201-84519-9).


Section 1. Declarations and Initializations

1.1: How should I decide which integer type to use?

A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.

1.4: What should the 64-bit type be on a machine that can support it?

A: C99 specifies long long.

1.7: What's the best way to declare and define global variables?

A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.

1.11: What does extern mean in a function declaration?

A: Nothing, really; the keyword extern is optional here.

1.12: What's the auto keyword good for?

A: Nothing.

1.14: I can't seem to define a linked list node which contains a
pointer to itself.

A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.

1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to char?

A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.

1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.

A: Calling an undeclared function declares it implicitly as
returning int.

1.25b: What's the right declaration for main()?

A: See questions 11.12a through 11.15.

1.30: What am I allowed to assume about the initial values of
variables which are not explicitly initialized?

A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).

1.31: Why can't I initialize a local array with a string?

A: Perhaps you have a pre-ANSI compiler.

1.31b: What's wrong with "char *p = malloc(10);" ?

A: Function calls are not allowed in initializers for global or
static variables.

1.32: What is the difference between char a[] = "string"; and
char *p = "string"; ?

A: The first declares an initialized and modifiable array; the
second de