Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> инициализация экземпляра структуры, при объявлении 
:(
    Опции темы
slater
Дата 22.10.2010, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 20.11.2009

Репутация: -2
Всего: -4



здраствуйте

очень часто приходится видеть(особенно в исходном коде ядра linux) следующее объявление экземпляра структуры с начальным присвоением значений
например:

Код

#include <string.h>

struct my_struct {
    char* str;
    int      size;
};

int main() {

    char string[] = "hello, vingrad";
    struct my_struct hello {
        .str   = string,
        .size = strlen(string),
    };
    return 0;
}


логически как бы все верно, но в литературе об этом не писано(
но с другой стороны, если я начну такое юзать в своей программе - то не соберется - на синтаксис ругается

вопрос: что это? где более подробно прочесть? и как мне такое использовать

P.S. подозреваю, это какая то фича самого gcc)
PM MAIL   Вверх
boostcoder
Дата 22.10.2010, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(slater @  22.10.2010,  19:09 Найти цитируемый пост)
подозреваю, это какая то фича самого gcc) 

угу.

PM WWW   Вверх
djamshud
Дата 22.10.2010, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



Почитать здесь

Добавлено через 2 минуты и 12 секунд
Ну а чтобы включить, нужно использовать гнутый --std (см ман).


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
xido
Дата 25.10.2010, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 19.10.2010

Репутация: нет
Всего: нет



Это фича из последнего стандарта C. Поддерживается пока не всеми, gcc один из тех кто поддерживает (возможно ранее это была чисто его фишка). 
PM MAIL WWW   Вверх
slater
Дата 25.10.2010, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 20.11.2009

Репутация: -2
Всего: -4



ребята, спасиобо за советы

так какой именно флаг надо указать при компиляции что бы это поддерживалось

-std????
PM MAIL   Вверх
xido
Дата 25.10.2010, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 19.10.2010

Репутация: нет
Всего: нет



std99 кажется. 
Но вообще по моему оно по умолчанию работает, разве нет (может надо выключить какой-нибудь pedantic   )?

Это сообщение отредактировал(а) xido - 25.10.2010, 11:27
PM MAIL WWW   Вверх
djamshud
Дата 25.10.2010, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



Хм. Попробовал. Во-первых, нужно писать:

Код

struct my_struct hello ={
        .str   = 0,
        .size = 0,
    };


Во-вторых, это заработало только в С. В С++ можно так:

Код

    struct my_struct hello = {
        str:0,
        size:0,
    };


Это сообщение отредактировал(а) djamshud - 25.10.2010, 11:36


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
xido
Дата 25.10.2010, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 19.10.2010

Репутация: нет
Всего: нет



А при чем тут плюсы? Речь идет про C.
PM MAIL WWW   Вверх
djamshud
Дата 25.10.2010, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



Не нашел, где бы было сказано про чистый С, поэтому сделал поправку и на плюсы. Что касается варианта С, я в нем сделал исправление. Кто-то знак равенства пропустил.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
slater
Дата 25.10.2010, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 20.11.2009

Репутация: -2
Всего: -4



спасибо ребята, вопрос решен
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.1148 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.