프로그래밍 언어/C++
C와 C ++ 모두에서 유효한 코드가 각 언어로 컴파일 될 때 다른 동작을 생성하는 방법
Rateye
2021. 6. 11. 11:16
728x90
반응형
질문 : C와 C ++ 모두에서 유효한 코드가 각 언어로 컴파일 될 때 다른 동작을 생성 할 수 있습니까?
C와 C ++에는 많은 차이가 있으며 모든 유효한 C 코드가 유효한 C ++ 코드는 아닙니다.
( "유효"란 정의 된 동작이있는 표준 코드를 의미합니다. 즉, 구현 특정 / 정의되지 않은 등이 아닙니다.)
C와 C ++ 모두에서 유효한 코드 조각이 각 언어의 표준 컴파일러로 컴파일 될 때 다른 동작을 생성하는 시나리오가 있습니까?
합리적이고 유용한 비교를하기 위해 (질문에서 명백한 허점을 찾으려하지 않고 실질적으로 유용한 것을 배우려고합니다) 다음과 같이 가정 해 보겠습니다.
- 전처리 기와 관련된 것은 없습니다 (즉
#ifdef __cplusplus
, pragma 등의 해킹이 없음을 의미합니다.) - 구현에 정의 된 모든 것은 두 언어에서 동일합니다 (예 : 숫자 제한 등).
- 각 표준의 합리적으로 최신 버전을 비교하고 있습니다 (예 : C ++ 98 및 C90 이상).
버전이 중요한 경우 각 버전이 다른 동작을 생성하는지 언급하십시오.
답변
C와 C ++에서 유효한 다음은 C와 C ++에서 i
에서 다른 값을 생성 할 가능성이 높습니다.
int i = sizeof('a');
차이점에 대한 설명은 C / C ++의 문자 크기 ( 'a')를 참조하십시오.
이 기사 에서 또 하나 :
#include <stdio.h>
int sz = 80;
int main(void)
{
struct sz { char c; };
int val = sizeof(sz); // sizeof(int) in C,
// sizeof(struct sz) in C++
printf("%d\n", val);
return 0;
}
출처 : https://stackoverflow.com/questions/12887700/can-code-that-is-valid-in-both-c-and-c-produce-different-behavior-when-compile
728x90
반응형