Форум программистов, компьютерный форум CyberForum.ru

Необходимо разобораться с предопределёнными макросами (компилятор g++) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Наследование конструкторов http://www.cyberforum.ru/cpp-beginners/thread1093479.html
Здрасти. Такая проблема. У меня есть классы с таким наследованием: KIERUNEK-->PRZEDMIOT-->OCENA<--STUDENT Вот конструкторы класса OCENA: ocena(); ocena(student& s); //Конструктор копирования; ocena(przedmiot& p); //Конструктор копирования; ocena(float oi, float oii, float ow, float oa); ...
C++ В квадратной матрице найти номер первого отрицательного элемента в строке и составить из них массив. Помогите плз. Никак соображу как сделать лабу. Дан массив размером nxn, элементы которого целые числа. Для каждой строки найти номер первого отрицательного элемента и записать данные в новый массив. Проблема вот в чем: Как показать программе, что мне нужно убрать только 1-й отрицательный элемент в каждой строке? Вот что я попытался сделать, дальше не знаю:#include<iostream> using namespace... http://www.cyberforum.ru/cpp-beginners/thread1093474.html
Создание уникальной системы отрисовки графики и проверок проходимости в системе, при разных разрешениях экрана C++
Всем доброго времени суток! Начал писать 2D игрушку (вид с боку) и пришел момент, когда я решил, что было бы круто ввести возможность изменять разрешения окна с включенным и выключенным режимом Full screen. Поскольку я отрисовываю все и проверяю по координатам, то при изменении разрешение ничего не измениться, лишь окно увеличиться в размерах и появится черная область (где нет прорисовки)....
Вычислить среднее арифметическое отрицательных элементов массива. Использовать функцией для каждой строки матрицы А (4, 8) C++
Здравствуйте. Вычислить среднее арифметическое отрицательных элементов массива. Использовать функцией для каждой строки матрицы А (4, 8). Вот есть наброски, но я если честно вообще ничего не понял, что вышло. Есть что то близкое? Помогите пожалуйста, на путь истинный поставьте. #include <iostream.h> #include <time.h> float func(int *arr, int a) { int s=0; float sr=0; ...
C++ Пропал значек run в CodeBlocks http://www.cyberforum.ru/cpp-beginners/thread1093434.html
Здравствуйте прошу не судить строго ... до этого не программировал на C++ Только PHP ...) Вообщем такая проблема ... создал проект ... создал hello world...добавил empty file в проект и написал в нем программу которая считает 2 переменные после ввода их значения через клавиатуру. Когда сохранил второй файл ... и хотел попытаться скомпилировать... в панели пропал значек запуска программы ... в чем...
C++ Поделитесь советом. Как сократить еще 1 символ. =) c>>a; a--; while(g+=a&1, a/=2); o<<g%3; Подскажите, пожалуйста, реально ли укоротить ее еще? ))) подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
10.02.2014, 17:23     Необходимо разобораться с предопределёнными макросами (компилятор g++)
Друзья! Этой темой начинается (надеюсь, ей и закончится) цикл вопросов про предопределённые макросы. Те, которые мы определяем сами (или другие разработчики) , с ними можно разобраться, статью все знают, где читать. Те, которые определены компилятором- по ним вообще мало инфы.

+++++++++++++++++++++++++++++++++++++++++++++

Итак, предопределённый макрос __FUNCTION__; читаем у Гриффитса:
Строка в кавычках, содержащая имя текущей функции.
Скропаем исходник с этим макросом, дабы определить- он вообще ЖИВОЙ? (Не могу подобрать другого слова, а термин "предопределён" тут не подходит, позже поймёте почему)
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <windows.h>
#include <stdio.h>
 
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    printf (__FUNCTION__);
    
    getchar ();
    return 0;
}
Командуем:
Bash
1
2
g++ -o main.exe main.cpp
main.exe
(думаю, если будете компилить с опциями по умолчанию в той же Dev-C++, большой ошибки не будет)
Наблюдаем:
Bash
1
main
ОК, вывод: макрос __FUNCTION__ вполне себе жив. А теперь попробуем ГРАМОТНО найти предопределённые макросы, которые предопределяются компилятором при компиляции main.cpp; __FUNCTION__ среди них не будет. Читаем у Гриффитса:
Можете использовать опцию препроцессора -dМ, чтобы увидеть весь их список. Подаваемая для этоrо команда должна выrлядеть примерно так:
срр E -dМ myprog.c | sort | more
Список, выводимый по этой команде, содержит директивы #define для каждоro макроса, определённоrо препроцессором после обработки указанноrо исходноrо файла и всех включаемых им заголовочных файлов.
Командуем:
Bash
1
срр -E -dМ main.cpp> rez.txt
, открываем файл rez.txt, там будет куча макросов всяких, но __FUNCTION__ среди них не будет, почему?

++++++++++++++++++++++++++++++++++++++++++++

То есть если бы __FUNCTION__ ВООБЩЕ не был живым, было бы как-то понятнее. Можно было бы предположить, что мой компилятор его не предопределяет- а не обязан потому что по стандарту. (к сожалению, это так, пункт 16.8 стандарта.) Но он в одном случае предопределён (при использовании), а в другом нет (при выводе предопределённых макросов). Почему так? Спасибо, кто откликнется, g++ 4.6.2
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru