Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Препроцессор: #pragma / 13 сообщений из 13, страница 1 из 1
13.03.2018, 21:24
    #39614405
newbie3732
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессор: #pragma
"...Осуществить передачу параметров в программу и блокировку их передачи с помощью директивы #pragma..."
Насколько я понял - речь идет о параметрах командной строки. Все, что удалось найти, что касается параметров, это Borland/Embarcadero #pragma argsused . У Microsoft такого - нет . Такое вообще возможно?

"...Используя директиву pragma, переопределить или проверить поведение, заданное параметрами компилятора и выдать соответствующие сообщения..." С переопределить еще более-менее понятно - на примере того же /Zp - #pragma pack(push, x) А как проверить ? Ведь для того, чтобы проверить, необходимо же узнать чему равен параметр компилятора. Как это можно сделать?
...
Рейтинг: 0 / 0
14.03.2018, 01:36
    #39614483
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессор: #pragma
newbie3732,

Что за бред?
Что проверять собираешься?
Не нужны параметры коммандной строки -- не используй просто, и всё.
...
Рейтинг: 0 / 0
14.03.2018, 08:58
    #39614526
newbie3732
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессор: #pragma
MasterZivЧто за бред?

Это не бред, а задания к разделу Препроцессор

MasterZivЧто проверять собираешься?

"...Используя директиву pragma, переопределить или проверить поведение , заданное параметрами компилятора и выдать соответствующие сообщения..."
Но для того, чтобы что-то проверять надо знать параметры компилятора. Как можно узнать параметры компилятора, используя директиву pragma?

MasterZivНе нужны параметры коммандной строки -- не используй просто, и всё.

"...Осуществить передачу параметров в программу и блокировку их передачи с помощью директивы #pragma..." - такое задание.
...
Рейтинг: 0 / 0
14.03.2018, 09:25
    #39614537
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессор: #pragma
"...Осуществить передачу параметров в программу и блокировку их передачи с помощью директивы #pragma..." - такое задание.
К тому преподавателю я-бы советовал подойти и снова уточнить задание. Не бывает заданий без консультаций.

Может быть речь идет о какой-то специфике Borland/Embarcadero?
...
Рейтинг: 0 / 0
14.03.2018, 10:18
    #39614573
newbie3732
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессор: #pragma
maytonМожет быть речь идет о какой-то специфике Borland/Embarcadero?

Нет - Microsoft.
...
Рейтинг: 0 / 0
14.03.2018, 15:02
    #39614794
Вася Уткин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессор: #pragma
newbie3732"...Используя директиву pragma, переопределить или проверить поведение , заданное параметрами компилятора и выдать соответствующие сообщения..."
Но для того, чтобы что-то проверять надо знать параметры компилятора. Как можно узнать параметры компилятора, используя директиву pragma?

Вот так ты можешь проверить установлен ли /Zp1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
#include <iostream>

#pragma pack(push, 1) 
struct t1 {
 char a;
 float b;
};
#pragma pack(pop) 

struct t2 {
 char a;
 float b;
};

int main() {
 std::cout << std::boolalpha << (sizeof(t1) == sizeof(t2)) << std::endl;
 return 0;
}
...
Рейтинг: 0 / 0
14.03.2018, 15:52
    #39614848
newbie3732
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессор: #pragma
2Вася Уткин

Спасибо. Для /Zp - то что надо. Но практически остальные опции можно проверить через #if или #ifdef, но никак не через #pragma.
...
Рейтинг: 0 / 0
16.03.2018, 09:17
    #39615752
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессор: #pragma
newbie3732MasterZivЧто за бред?

Это не бред, а задания к разделу Препроцессор

MasterZivЧто проверять собираешься?

"...Используя директиву pragma, переопределить или проверить поведение , заданное параметрами компилятора и выдать соответствующие сообщения..."
Но для того, чтобы что-то проверять надо знать параметры компилятора. Как можно узнать параметры компилятора, используя директиву pragma?

MasterZivНе нужны параметры коммандной строки -- не используй просто, и всё.

"...Осуществить передачу параметров в программу и блокировку их передачи с помощью директивы #pragma..." - такое задание.

#pragma -- это комманды препроцессора, которые специфичны для конкретного компилятора.
Они нестандартные.
Можно ли через них получить параметры запуска компилятора -- об этом читай в документации по твоему компилятору.
...
Рейтинг: 0 / 0
16.03.2018, 09:19
    #39615754
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессор: #pragma
newbie37322Вася Уткин

Спасибо. Для /Zp - то что надо. Но практически остальные опции можно проверить через #if или #ifdef, но никак не через #pragma.

автор переопределить или проверить поведение, заданное параметрами компилятора и выдать соответствующие сообщения..."
...
Рейтинг: 0 / 0
16.03.2018, 15:13
    #39615992
newbie3732
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессор: #pragma
MasterZivчитай в документации по твоему компилятору.
newbie3732 Microsoft
...
Рейтинг: 0 / 0
16.03.2018, 22:52
    #39616157
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессор: #pragma
newbie3732MasterZivчитай в документации по твоему компилятору.
newbie3732 Microsoft
Тебе эксперт даёт совет почитать документацию по компиллятору.
Ты почитал? Что тебе понятно? Что нет?

У форума нет перед тобой обязательств. А у тебя есть. Ты пришел с проблемой
- тебя консультируют. Если ты не слушаешь советов то
тебе не будут помогать дальше.

Сделай усилие над собой. Будь так любезен.
...
Рейтинг: 0 / 0
17.03.2018, 13:32
    #39616223
newbie3732
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессор: #pragma
maytonТы почитал?
Да
maytonЧто тебе понятно? Что нет?
Не понятно (то есть не нашел в документации) как "...Осуществить передачу параметров в программу и блокировку их передачи с помощью директивы #pragma...". Особенно "...Осуществить передачу параметров в программу..." Ведь, насколько я понимаю, передача параметров в программу - это прерогатива вызывающей стороны. Для конкретики и простоты возьмем MS-DOS. При выполнении Int 21h Function 4Bh (exec) параметры командной строки копируются в PSP , формируется массив указателей, а затем настраивается char **argv. Так вот в свете выше сказанного: я не представляю как изнутри программы можно "...Осуществить передачу параметров в программу..." вообще. И уж тем более с помощью препроцессора. И уж тем более с помощью директивы #pragma. Насчет блокировки: если бы не требование использовать именно директиву #pragma, то можно было бы сделать что-то вроде этого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#define USE_COMMAND_LINE_ARGUMENTS

int main(
#ifdef USE_COMMAND_LINE_ARGUMENTS
    int argc, char **argv, char **envp
#endif
)



В описании pack нет ничего похожего на вариант, предложенный Вася Уткин.

Поэтому я не требую, а просто спрашиваю - может кто-то еще знает и предложит.
...
Рейтинг: 0 / 0
17.03.2018, 13:54
    #39616226
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Препроцессор: #pragma
newbie3732может кто-то еще знает и предложит.

Выдавший задание - точно знает. И, возможно, что-нибудь предложит. А пока это игра в
глухой телефон, где легко путается "программа" и "подпрограмма".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Препроцессор: #pragma / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]