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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как использовать С исходник с двумя разными Хидера 
:(
    Опции темы
Valimor
Дата 16.9.2016, 04:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



к примеру имеется .с исходник, где прописаны:
Код

#define Исходник
SW_DOUT_PIN = 1;           //установить логическую единицу на этой ножке
SW_DOUT_PIN = 0;           //установить логический ноль на этой ножке
SW_DOUT_PIN = 1;           //снова установить логическую единицу на этой ножке

в первом хидере SW_DOUT_PIN определяется как:
Код

.h
#define хидер1
#define SW_DOUT_PIN PORTA5     //дефайн определяет 5 ножку микроконтроллера

но так же мне нужно, чтобы в другой момент сишный исходник видел другой хидер в котором дефайн с таким же именем указывал бы на другую ножку, скажем вот так:
Код

.h
#define хидер2
#define SW_DOUT_PIN PORTA3     //дефайн определяет 3 ножку микроконтроллера

То есть чтобы на этапе компиляции препроцессор на основе одного хидера подставил где-то код:
Код

PORTA5 = 1;
PORTA5 = 0;
PORTA5 = 1;

а где-то в другом месте программы на основе другого хидера по тем же строчкам из исходника подставил другой код:
Код

PORTA3 = 1;
PORTA3 = 0;
PORTA3 = 1;

Это возможно? 
если я что-то непонятно написал, скажите мне, я постараюсь объяснить лучше

Это сообщение отредактировал(а) Valimor - 16.9.2016, 05:09
PM MAIL   Вверх
xvr
Дата 16.9.2016, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



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

Например. 1й инклюд файл (пусть он называется config1.h)
Код

#define SW_DOUT_PIN PORTA5     //дефайн определяет 5 ножку микроконтроллера


2й инклюд (config2.h)
Код

#define SW_DOUT_PIN PORTA3     //дефайн определяет 3 ножку микроконтроллера


Ваш сишник
Код

#include CONFIG

SW_DOUT_PIN = 1;           //установить логическую единицу на этой ножке
SW_DOUT_PIN = 0;           //установить логический ноль на этой ножке
SW_DOUT_PIN = 1;           //снова установить логическую единицу на этой ножке


При компиляции подаете дефайн CONFIG как "config1.h" или "config2.h"
Код

Командная строка:
gcc -DCONFIG="config1.h" ...
Или в IDE в настройках проекта в символах препроцессора (смотря чем вы собираете свой проект)

Или сделайте отдельный конфиг файл (setup.h) который будуте включать во все исходники перед #include CONFIG
Код

#define CONFIG "config1.h"


Ваш сишник:
Код

#include "setup.h"
#include CONFIG

SW_DOUT_PIN = 1;           //установить логическую единицу на этой ножке
SW_DOUT_PIN = 0;           //установить логический ноль на этой ножке
SW_DOUT_PIN = 1;           //снова установить логическую единицу на этой ножке


PM MAIL   Вверх
bsa
Дата 20.9.2016, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Valimor, сколько пишу программы, ни разу такое не нужно было. Было, когда один и тот же файл надо в разных частях программы подключить по-разному, но чтобы так... Может стоит сделать иначе:
Код
/* file config.h */
#ifndef CONFIG_H
#define CONFIG_H

#ifdef USE_PIN_3
#define SW_DOUT_PIN PORTA3
#else
#define SW_DOUT_PIN PORTA5
#endif

#endif /* CONFIG_H */
Этот файл подключается в обоих исходниках, но в одном из них перед инклюдом ставишь #define USE_PIN_3
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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