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

Безымянный аргумент функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Одномерные массивы.Сформировать случайным образом два массива d(10) и a(10) http://www.cyberforum.ru/cpp-beginners/thread916910.html
Сформировать случайным образом два массива d(10) и a(10). Сложить их. В новом массиве найти первый отрицательный элемент и вывести его на экран. Если отрицательных элементов нет, то дать об этом сообщение. помогите пожалуйста)
C++ Параллельное программирование в С++ Здравствуйте! я новичок в параллельном программировании. Помогите пожалуйста с задачкой!! Есть одна глобальная переменная, которая должна модифицироваться двумя потоками. Синхронизировать эти потоки по средствам критической секции. Заранее спасибо) http://www.cyberforum.ru/cpp-beginners/thread916891.html
C++ решения уравнения
помогите написать программу которая решит уравнение f(X)=(X^3+^2)/(1-X^2+X^3) по формуле симпсона где а=0,1 в=3,2 е=0,001 с подробным описанием решения
Почему индекс массива начинается с нуля ? C++
Почему первый элемент массива обозначается 0 , а не 1.
C++ Ленивые вычисления http://www.cyberforum.ru/cpp-beginners/thread916871.html
____Много есть информации под boost, так же не отстает шарп и опережает всех хаскель. В плюсах только со стандарта C++0x. Даже попалась цельная Qt-шная библиотека для этого дела. Вообще концепция ленивых вычислений зародилась для функциональных языков. Но это все придумано, если возвращаться к C++, для удобства оперирования функторами и еще каких-то таинств. Но по сути же простые "ленивые...
C++ Матрица размером n*m. С помощью функций реализовать поиск и выборку определенных значений Буду очень признателен, если кто нибудь решит такую задачу: Дана матрица размером n*m. Нужно найти суммы элементов каждой её строки. Найти наибольшее и наименьшее значение суммы, а также определить в какой строке матрицы это значение найдено. Нужно использовать функции для суммирования элементов одномерного массива для нахождения минимума и максимума. подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
05.07.2013, 08:01     Безымянный аргумент функции
Цитата Сообщение от Tulosba Посмотреть сообщение
Т.е. соглашение вызова (cdecl в данном случае) как бы не причем, по-Вашему?
А где в исходнике хоть слово про cdecl?

Добавлено через 1 минуту
Цитата Сообщение от Evg Посмотреть сообщение
Согласно соглашению параметр приходит на таком-то регистре или стеке,
cdecl[править]
Основной способ вызова для Си (отсюда название, сокращение от «c-declaration»). Аргументы передаются через стек, справа налево. Очистку стека производит вызывающая программа. Это основной способ вызова функций с переменным числом аргументов (например, printf(…))
О регистре ни слова. Передача и через стек, и через регистры - это fastcall.
fastcall[править]
Передача параметров через регистры, обычно самая быстрая; если все параметры и промежуточные результаты умещаются в регистрах, манипуляции со стеком вообще не нужны.
Fastcall не стандартизирован, поэтому используется только в функциях, которые программа не экспортирует наружу и не импортирует извне.
В компиляторе Borland, для соглашения __fastcall, называемого также register,[1] параметры передаются слева направо в eax, edx, ecx и, если параметров больше трёх, в стеке, также слева направо. Указатель стека на исходное значение возвращает вызываемая подпрограмма.
Fastcall Borland применяется по умолчанию в Delphi.
Соглашение __fastcall Microsoft, также называемое __msfastcall, в 32-хразрядной версии компилятора Microsoft,[2] а также компилятора GCC,[3] определяет передачу первых двух параметров слева направо в ecx и edx, а остальные параметры передаются справа налево в стеке. Очистку стека производит вызываемая подпрограмма.
Для x64 целей компилятор Microsoft VisualStudio 2010 CL принимает данное соглашение по умолчанию, остальные игнорируются, даже если заданы явно. Передача параметров в данном случае происходит при помощи 4х 64х разрядных регистра: rcx, rdx, r8, r9. В случае если параметров больше — остальные передаются через стек.
. В случае одного целого fascall гарантирует передачу через регистр, но только если не параметру не нужен адрес.

Добавлено через 57 секунд
Кстати, очень подозреваю, что здесь неявный fascall.

Добавлено через 3 минуты
Цитата Сообщение от Evg Посмотреть сообщение
Это не хак, а $рань господня, которая будет работать исключительно на твоём компиляторе, т.к. твой "хак" ты подогнал под поведение конкретно своего компилятора
Грязный хак как раз и должен быть не переносимым и подгоняться под конкретное сочетание компилятора, IDE, целевой опеационки и целевого "железа".
 
Текущее время: 16:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru