다음 코드에서는 구조체 멤버 변수를 구조체 이름과 동일한 이름으로 선언했습니다. struct st
{
int st;
};
int main()
{
struct st t;
t.st = 7;
return 0;
}
가 나는 GCC 컴파일러에서 잘 일하고과 충돌 오류를 제공하지 않습니다 궁금하다. 그래서, 어떻게
x86 및 x86_64 시스템에서 int16_t을 컴파일하는 동안 int16_t complex이 컴파일되지 않는 이유는 short int에 typedef가 있습니까? 다음은 g99 5.4 및 4.9에서 C99 및 C11 표준을 사용하여 테스트 한 샘플 코드입니다. 컴파일러는 선언 지정자에 두 개 이상의 데이터 유형이있는 것에 대해 불만을 토로합니다.는 코드
는이 같은 변수를 초기화합니다. prog.c: In function 'main':
prog.c:5:23: warning: division by zero [-Wdiv-by-zero]
static int i = 2 * 2/0;
^
prog.c:5:17: error: initializer element is not constant
안녕하세요 가지고 다음 명령을 사용하여 컴파일 된 C11 프로그램에 gcc (버전 5.4.0)이 경고 : $ gcc -g -Wall -std=c11 main.c -o minishell
main.c: In function ‘process_new’:
main.c:184:10: error: assignment of read-only variable ‘s’
제 질문을 쉽게 설명 할 수있는 방법은 코드에서 설명하는 것입니다. C에서 인과 관계된 예를 들어 답안에 관심을 쏟습니다. // Just some complex user defined type
typedef struct {
...
} state_t;
typedef struct {
state_t states[16];
} state_
가끔 원자와 원자가 아닌 변수에 액세스하려고 할 수 있습니다. error: address argument to atomic operation must be a pointer to _Atomic type ('int *' invalid)
atomic_fetch_add(&var, 1);
내가 찾을 수있는 가장 좋은 방법은 캐스팅이다 : 그러나이 연타 4.0
펜스를 사용하여 C11에서 비 원자 연산의 동작을 판단 할 수있는 방법이 있습니까? 특히, 특정 필드가 int 일 필요가있는 상황에서 코드를 읽거나 쓰거나 시스템 호출 인수로 전달할 수있는 이전 인터페이스와의 호환성을 위해 코드를 안전하게 만들고 싶습니다. atomic_int이 int과 같은 크기 일 필요는 없으므로 atomic_int을 사용할 수 없습니다
그냥 호기심. 나는 time_bits과 비슷한 형태의 변수 이름을 struct tm이라고 부르기도했다. 왜냐하면 그 변수에 broken-down calendar time bits가 포함되어 있기 때문이다. 필자가 보았던 대부분의 문서는이 유형을 '달력 시간'이라고 부르며 time_t의 '시계 시간'또는 '획 초'와 반대입니다.