What is the behavior when a new C programming language standard is official, the old standard is ALWAYS...
up vote
0
down vote
favorite
Are there any deprecation between c89/90
c99
c11
c18
? Or only recommendation of avoid certain function like strlen
and use a "safer" strnlen_s
?
c
add a comment |
up vote
0
down vote
favorite
Are there any deprecation between c89/90
c99
c11
c18
? Or only recommendation of avoid certain function like strlen
and use a "safer" strnlen_s
?
c
2
Yes; thegets
function is the biggest example
– Govind Parmar
Nov 22 at 16:17
1
...which is mentioned in the Wikipedia article for C11.
– Robert Harvey♦
Nov 22 at 16:18
1
gets
is not only depracated in C11, but in fact completely removed. The changes can be found in the appendixes of each standard document.
– DeiDei
Nov 22 at 16:26
2
Possible duplicate of Compatibility of C89/C90, C99 and C11
– Swordfish
Nov 22 at 16:26
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
Are there any deprecation between c89/90
c99
c11
c18
? Or only recommendation of avoid certain function like strlen
and use a "safer" strnlen_s
?
c
Are there any deprecation between c89/90
c99
c11
c18
? Or only recommendation of avoid certain function like strlen
and use a "safer" strnlen_s
?
c
c
asked Nov 22 at 16:16
xpto
76321127
76321127
2
Yes; thegets
function is the biggest example
– Govind Parmar
Nov 22 at 16:17
1
...which is mentioned in the Wikipedia article for C11.
– Robert Harvey♦
Nov 22 at 16:18
1
gets
is not only depracated in C11, but in fact completely removed. The changes can be found in the appendixes of each standard document.
– DeiDei
Nov 22 at 16:26
2
Possible duplicate of Compatibility of C89/C90, C99 and C11
– Swordfish
Nov 22 at 16:26
add a comment |
2
Yes; thegets
function is the biggest example
– Govind Parmar
Nov 22 at 16:17
1
...which is mentioned in the Wikipedia article for C11.
– Robert Harvey♦
Nov 22 at 16:18
1
gets
is not only depracated in C11, but in fact completely removed. The changes can be found in the appendixes of each standard document.
– DeiDei
Nov 22 at 16:26
2
Possible duplicate of Compatibility of C89/C90, C99 and C11
– Swordfish
Nov 22 at 16:26
2
2
Yes; the
gets
function is the biggest example– Govind Parmar
Nov 22 at 16:17
Yes; the
gets
function is the biggest example– Govind Parmar
Nov 22 at 16:17
1
1
...which is mentioned in the Wikipedia article for C11.
– Robert Harvey♦
Nov 22 at 16:18
...which is mentioned in the Wikipedia article for C11.
– Robert Harvey♦
Nov 22 at 16:18
1
1
gets
is not only depracated in C11, but in fact completely removed. The changes can be found in the appendixes of each standard document.– DeiDei
Nov 22 at 16:26
gets
is not only depracated in C11, but in fact completely removed. The changes can be found in the appendixes of each standard document.– DeiDei
Nov 22 at 16:26
2
2
Possible duplicate of Compatibility of C89/C90, C99 and C11
– Swordfish
Nov 22 at 16:26
Possible duplicate of Compatibility of C89/C90, C99 and C11
– Swordfish
Nov 22 at 16:26
add a comment |
2 Answers
2
active
oldest
votes
up vote
2
down vote
accepted
Newer standards are not guaranteed to be compatible, even though the committee has a (far too) strong focus on backwards compatibility.
- C90 is not completely compatible with newer versions.
- C11 and C17 are compatible with C99, apart from some corrections.
Official recommendations of functions to avoid are found in:
- C17 6.11 Future language directions, and
- C17 6.32 Future library directions
Notably, the official recommendations are free from misguided Microsoft propaganda regarding the string handling functions etc.
Unofficial recommendations by yours sincerely here:
Which functions from the standard library must (should) be avoided?.
add a comment |
up vote
1
down vote
The following code is valid in C89, deprecated under C99, and invalid in C11 and further, due to its use of the unsafe function gets
:
#include <stdio.h>
int main()
{
char str[100];
puts("What's your name?");
gets(str);
printf("Hello %s!n", str);
}
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
accepted
Newer standards are not guaranteed to be compatible, even though the committee has a (far too) strong focus on backwards compatibility.
- C90 is not completely compatible with newer versions.
- C11 and C17 are compatible with C99, apart from some corrections.
Official recommendations of functions to avoid are found in:
- C17 6.11 Future language directions, and
- C17 6.32 Future library directions
Notably, the official recommendations are free from misguided Microsoft propaganda regarding the string handling functions etc.
Unofficial recommendations by yours sincerely here:
Which functions from the standard library must (should) be avoided?.
add a comment |
up vote
2
down vote
accepted
Newer standards are not guaranteed to be compatible, even though the committee has a (far too) strong focus on backwards compatibility.
- C90 is not completely compatible with newer versions.
- C11 and C17 are compatible with C99, apart from some corrections.
Official recommendations of functions to avoid are found in:
- C17 6.11 Future language directions, and
- C17 6.32 Future library directions
Notably, the official recommendations are free from misguided Microsoft propaganda regarding the string handling functions etc.
Unofficial recommendations by yours sincerely here:
Which functions from the standard library must (should) be avoided?.
add a comment |
up vote
2
down vote
accepted
up vote
2
down vote
accepted
Newer standards are not guaranteed to be compatible, even though the committee has a (far too) strong focus on backwards compatibility.
- C90 is not completely compatible with newer versions.
- C11 and C17 are compatible with C99, apart from some corrections.
Official recommendations of functions to avoid are found in:
- C17 6.11 Future language directions, and
- C17 6.32 Future library directions
Notably, the official recommendations are free from misguided Microsoft propaganda regarding the string handling functions etc.
Unofficial recommendations by yours sincerely here:
Which functions from the standard library must (should) be avoided?.
Newer standards are not guaranteed to be compatible, even though the committee has a (far too) strong focus on backwards compatibility.
- C90 is not completely compatible with newer versions.
- C11 and C17 are compatible with C99, apart from some corrections.
Official recommendations of functions to avoid are found in:
- C17 6.11 Future language directions, and
- C17 6.32 Future library directions
Notably, the official recommendations are free from misguided Microsoft propaganda regarding the string handling functions etc.
Unofficial recommendations by yours sincerely here:
Which functions from the standard library must (should) be avoided?.
answered Nov 22 at 16:37
Lundin
105k17154259
105k17154259
add a comment |
add a comment |
up vote
1
down vote
The following code is valid in C89, deprecated under C99, and invalid in C11 and further, due to its use of the unsafe function gets
:
#include <stdio.h>
int main()
{
char str[100];
puts("What's your name?");
gets(str);
printf("Hello %s!n", str);
}
add a comment |
up vote
1
down vote
The following code is valid in C89, deprecated under C99, and invalid in C11 and further, due to its use of the unsafe function gets
:
#include <stdio.h>
int main()
{
char str[100];
puts("What's your name?");
gets(str);
printf("Hello %s!n", str);
}
add a comment |
up vote
1
down vote
up vote
1
down vote
The following code is valid in C89, deprecated under C99, and invalid in C11 and further, due to its use of the unsafe function gets
:
#include <stdio.h>
int main()
{
char str[100];
puts("What's your name?");
gets(str);
printf("Hello %s!n", str);
}
The following code is valid in C89, deprecated under C99, and invalid in C11 and further, due to its use of the unsafe function gets
:
#include <stdio.h>
int main()
{
char str[100];
puts("What's your name?");
gets(str);
printf("Hello %s!n", str);
}
answered Nov 22 at 16:26
Govind Parmar
6,92553053
6,92553053
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53434866%2fwhat-is-the-behavior-when-a-new-c-programming-language-standard-is-official-the%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
Yes; the
gets
function is the biggest example– Govind Parmar
Nov 22 at 16:17
1
...which is mentioned in the Wikipedia article for C11.
– Robert Harvey♦
Nov 22 at 16:18
1
gets
is not only depracated in C11, but in fact completely removed. The changes can be found in the appendixes of each standard document.– DeiDei
Nov 22 at 16:26
2
Possible duplicate of Compatibility of C89/C90, C99 and C11
– Swordfish
Nov 22 at 16:26