Форум программистов, компьютерный форум 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; Подскажите, пожалуйста, реально ли укоротить ее еще? ))) подробнее

Показать сообщение отдельно
DrOffset
6425 / 3799 / 880
Регистрация: 30.01.2014
Сообщений: 6,592
16.02.2014, 14:43     Необходимо разобораться с предопределёнными макросами (компилятор g++)
Цитата Сообщение от kravam Посмотреть сообщение
Кроме того, я не нашёл там, что она- предопределённый идентификатор. Что она не макрос, я прочёл. Что она содержит имя вызываемой функции я знал. Осталось узнать- как это называется, дабы обратиться к соответсвующему разделу
В стандарте С++ этого не найти. Потому что это фича компилятора. Следовательно, первый источник мануал по компилятору.

В мануале GCC действительно не написано, что это именно идентификатор. Но это логически следует из описания. Однако я могу дать ссылку на другие источники где это четко обозначено, например вот.

Либо, можно обратиться к стандарту С, там есть __func__ который семантически соответствует __FUNCTION__.
6.4.2.2
Predefined identifiers
Semantics
1 The identifier _ _func_ _ shall be implicitly declared by the translator as if,
immediately following the opening brace of each function definition, the declaration
static const char _ _func_ _[]="function-name";
appeared, where function-name is the name of the lexically-enclosing function.

2 This name is encoded as if the implicit declaration had been written in the source
character set and then translated into the execution character set as indicated in translation
phase 5.
Добавлено через 14 часов 13 минут
Цитата Сообщение от kravam Посмотреть сообщение
Наверное, надо плясать от того, что она "an implementation-defined string". Сейчас попытаюсь определить, что это значит.
Это в старом стандарте. В последних двух (С99 и С11) это называется "predefined identifier".
Значит это то, что в случае обращения к такому идентификатору внутри функции, компилятор автоматически генерирует константу такого вида
static const char _ _func_ _[]="function-name"
и заносит туда строку с именем этой функции. Об этом написано и в вашей цитате. Ну и см. мой предыдущий пост с цитатой из более нового стандарта.

Вроде теперь все на своих местах, нет?
 
Текущее время: 22:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru