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

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

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

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

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

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

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

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

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

Нет - Microsoft.
...
Рейтинг: 0 / 0
Препроцессор: #pragma
    #39614794
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Препроцессор: #pragma
    #39614848
newbie3732
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Вася Уткин

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

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

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

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

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

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

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

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

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

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

Сделай усилие над собой. Будь так любезен.
...
Рейтинг: 0 / 0
Препроцессор: #pragma
    #39616223
newbie3732
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Препроцессор: #pragma
    #39616226
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
newbie3732может кто-то еще знает и предложит.

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


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