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

Использование строк в макросах С++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Квадратное уравнение http://www.cyberforum.ru/cpp-beginners/thread783801.html
Прога работает, но неправильно считает корни, что не так??? #include <stdio.h> #pragma hdrstop #include <math.h> #include <conio.h> //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv) {float a,b,c,d,x1,x2;
C++ Геометрическая задача (Найти стороны треугольника) Треугольник задан величинами своих углов и радиусом описанной окружности. Найти стороны треугольника. Помогите пожалуйста! http://www.cyberforum.ru/cpp-beginners/thread783795.html
C++ Литература С++
Всем привет ! Нужен список литературы поочередный , с чего начать не зная никакие языки и тд. , можно и видео самоучителей . Желательно с упражнениями , потомучто скоко литературы пересмотрел ничего дельного не нашел . Также список нужных программ для создания программ и дополнительное ПО ,буду благодарен за вашу помощь.
C++ Рекурсия. Составьте программу, которая для заданного натурального числа n вычисляет значение выражения
Составьте программу, которая для заданного натурального числа n вычисляет значение выражения: 1/1+1/2+1/3+1/4+1/...n-1+1\n
C++ нужно исправить ошибку в коде http://www.cyberforum.ru/cpp-beginners/thread783781.html
#include <iostream> using namespace std; template< class T > void selectSort(T* arr, int SIZE) { T tmp; for(int i = 0; i < SIZE; ++i) // i - номер текущего шага { int pos = i; tmp = arr;
C++ -0.1+0.1=-1.38778e-016 Всем доброго времени суток . Такая проблемка . #include <windows.h> #include <iostream> #include <iomanip> #include <fstream> #include <cmath> #include <cstdlib> using namespace std; подробнее

Показать сообщение отдельно
nonedark2008
767 / 525 / 97
Регистрация: 28.07.2012
Сообщений: 1,406
11.02.2013, 22:14     Использование строк в макросах С++
demogor, вы забываетесь. C/C++ - это компилируемые языки. Т.е. перед запуском куска кода - он должен быть скомпилирован! Т.е. невозможно выполнить в программе код, который помещен в текстовую строку. Это возможно в большинстве скриптовых языков, таких как Python, но никак не C++.
А при компиляции, компилятор возьмет строку RF_IMP(void, __cdecl, declare,testDeclare,void); затем преобразует ее в DECLARE_FUNC(testDeclare,declare,__cdecl, void); затем это преобразует в
__declspec(dllexport) void type_cl testDeclare_func( void ){
debug_msg("TestDeclare","hello!");
declare;
}
А затем полученный код он будет дальше компилировать. Т.е. как видно, вместо body подставиться просто строка теста, то никак не тело функции, которое вы хотите сделать.

Добавлено через 4 минуты
Стоит запомнить, что макросы никаким образом не работают с содержимым перменных, только с именами.
Например
C++
1
2
3
4
#define print(a, b) cout << a##b
void main( void ) {
  int x = 1, y = 2;
  split(x, y);
Результат будет не 12, как вы ожидаете, а ошибка компиляции, так как как видно в дефайне, он вместо a подставит x, вместо b - y, склеит их и получит xy. Т.е. в итоге попытается вывести переменную с именем xy, которая не определена.
 
Текущее время: 04:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru