LINUX.ORG.RU

C и typedef


0

0

Обьявляю обычный struct, и при попытке объявить новый тип: typedef Type *PointerToType;

аки сделать отдельный тип-указатель, получаю маты от gcc 8) Хотя при компиляции кода как C++-сного - все ок. Никто не знает в чем может быть дело?

★★★★
Ответ на: комментарий от Uncle_Theodore

>>+1. Но я почти уверен, что ты на структуру забыл typedef повесить.

ыыы, биг сэнкс :) Че-то совсем забыл что объявлять-то так следует:
typedef struct
{
double Interval;
double LastTick;
void* OnTimer;

void* Prev;
void* Next;
} sTimer, *pTimer;

А я обьявил как:
struct sTimer
{
double Interval;
double LastTick;
void* OnTimer;

void* Prev;
void* Next;
};
typedef sTimer *pTimer

Andru ★★★★
() автор топика
Ответ на: комментарий от Andru

Еще можно так

struct MyStruct
{

....
};

typedef struct MyStruct* pMyStruct;
 

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

Не ссорьтесь, братья... :)


teddy@toshiba32~$ cat ppo.c

#include<stdio.h>

typedef struct 
{
  int a;
} sNoda;

typedef sNoda *pNoda;

int main()
{
  sNoda noda;
  pNoda pointer = &noda;
  pointer->a = 5;

  printf("pointer->a=%d\n",pointer->a);

  return 0;
}

teddy@toshiba32~$ ./ppo 
pointer->a=5

Uncle_Theodore ★★
()
Ответ на: комментарий от st0ke

[dudraug@localhost ~]$ cat mm.c
#include <stdio.h>
typedef struct
{
int a;
int b;
} it;

it a;

int main()

{
  
 a.a=22;
printf("%i\n", a.a); 
 return 0;
}


[dudraug@localhost ~]$ gcc -std=c89 mm.c -o testtt
[dudraug@localhost ~]$ ./testtt 
22
[dudraug@localhost ~]$

Dudraug ★★★★★
()
Ответ на: комментарий от st0ke

> А дядя молодец, он не включил опцию -ansi.... а юзает не стандартные (либо с99) расширения (gnu например)

Дядя всяко молодец. :) Но что Вы, собственно, хотите сказать?

tedy@toshiba32~$ gcc -Wall -ansi -pedantic ppo.c -o ppo
tedy@toshiba32~$ ./ppo
tedy@toshiba32~$ pointer->a=5

Uncle_Theodore ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.