Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 03.08.2017
Сообщений: 118

c99 указатели, typedef

02.08.2024, 15:56. Показов 779. Ответов 4

Студворк — интернет-сервис помощи студентам
В Keil Vision использовал указатель для доступа к данным структуры:
C++
1
2
3
4
5
typedef struct ta
{const char * Name;
ListItem A;
uint32_t num;
uint8_t status;}myStruct;
затем обращаюсь к некоторой структуре:
b = (((myStruct *) item1)->num);
В проекте введено несколько файлов, в нескольких из них есть обращения через данный указатель. Пришлось повторить этот код с typedef на нескольких страницах проекта, слово extern не помогало. Может можно как-то красивее обращаться (кроме прятания этого typedef в заголовочный файл)?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.08.2024, 15:56
Ответы с готовыми решениями:

Без использования typedef все работает. При добавлении typedef — более 100 ошибок
Есть программа, с описанием структуры и функций, работающими с ней. Без использования typedef все работает. При добавлении typedef - более...

Указатели на функции + typedef
Здравствуйте , я вот встретил такую конструкцию typedef int(*compare_func_t)(const void*val1, const void*val2); Не понял что она означает...

Typedef void F(); typedef для типа функции через идентификатор
Здравствуйте цитата из typedef MSDN в интернете мне удалось нарыть только один конкретный пример: class A { typedef void F(); ...

4
1184 / 460 / 68
Регистрация: 22.09.2023
Сообщений: 1,400
02.08.2024, 15:59
Цитата Сообщение от jykm Посмотреть сообщение
(кроме прятания этого typedef в заголовочный файл)?
Если в этих файлах идет именно обращение через этот указатель - нельзя. Заголовочные файлы для того и придумали, чтобы один и тот же текст вставлять в разные файлы - как раз ваш случай.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
02.08.2024, 17:44
Цитата Сообщение от jykm Посмотреть сообщение
затем обращаюсь к некоторой структуре:
b = (((myStruct *) item1)->num);
Зачем здесь сделано приведение типа?

Цитата Сообщение от jykm Посмотреть сообщение
Пришлось повторить этот код с typedef на нескольких страницах проекта,
Что такое "страница проекта"?

В языке С всегда приходится "повторять" определения нелокальных типов, только делается это через включение заголовочных файлов. Для того заголовочные файлы и предназначены - чтобы не переписывать много раз одно и то же.

Цитата Сообщение от jykm Посмотреть сообщение
Может можно как-то красивее обращаться (кроме прятания этого typedef в заголовочный файл)?
Нет.
0
фрилансер
 Аватар для Алексей1153
6441 / 5635 / 1127
Регистрация: 11.10.2019
Сообщений: 14,981
02.08.2024, 18:36
Цитата Сообщение от jykm Посмотреть сообщение
можно как-то красивее
да, если добавить форматирование, будет красивее
0
207 / 58 / 19
Регистрация: 18.02.2018
Сообщений: 256
07.08.2024, 13:35
Определяете структуру в заголовочном файле:
C
1
2
3
4
5
6
struct ta {
    const char * Name;
    ListItem A;
    uint32_t num;
    uint8_t status;
}
Затем "связываете" эту структуру с другим именем, определяя новый тип:
C
1
typedef struct ta tastruct;
И в исходном файле используете этот тип:
C
1
2
3
4
5
6
7
8
9
10
/* Положим, определения выше — находятся в этом файле */
#include "ta-struct.h"
 
int
main (void)
{
    tastruct ta;
    
    return 0;
}
Куда уж красивее? Поля структуры вам определять? Да. Хотите не обращаться к этой структуре по её первичному типу? Вам же заботиться о красивом "переименовании" этого типа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.08.2024, 13:35
Помогаю со студенческими работами здесь

Можно ли получить сертификат на C (C99)...
а также ANSI SQL (T-SQL), уровня что-то вроде middle level или слегка > . Если да, то где ? (Про Quizful знаю, надо...

Включение поддержки C99 в CodeBlocks
Здравствуйте! Нужно написать прогу на C (без плюсов, желательно чтоб стандарт С99). Пишу в C::B. Эта сволочь мне выдает: use...

C99 - массивы переменной длины
Прочитал в википедии, что стандарт C99 предполагает поддержку массивов переменной длины. Признаться для меня это небольшой разрыв...

Поддерживает ли mingw6.3 стандарт C99?
Отчего возник такой вопрос. Решал задачу на подсчет суммы цифр введенного 3-значного числа, вроде решил: //Программа подсчитывает...

Указатели и указатели на указатели, а также типы данных
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно. Накачал литературы, буду изучать) Щас...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru