Результаты поиска по запросу "macros"

1 ответ

иначе нет: /, но интересно :)

спользовании препроцессора C можно привести строковый макрос в следующий аргумент: #define TO_STRING(x) "a string with " #xи поэтому при использовании, результат будет следующим: TO_STRING(test) будет расширяться до:"a string with test" Есть ...

3 ответа

Больше информации о `({});` в C?

Я заметил, что иногда макросы C пишутся примерно так: #define foo(bar) ({ ++bar; })После некоторых экспериментов я обнаружил, что: ({}); скомпилирует, но ничего не сделает. (Как и ожидалось.)Покидая; Выключение вызовет синтаксическую ошибку. ...

2 ответа

моя цель - сделать так, чтобы любой класс, который наследовал от animal, мог быть скомпилирован в разделяемую библиотеку или может быть выполнен без каких-либо изменений кода.

у нас есть простой интерфейс базового класса: class animal { public: animal(int age) : age_(age) { } virtual ~animal(void) { } virtual std::string get_name(void) { return "A generic animal"; } int get_age(void) { return age_; } protected: int ...

ТОП публикаций

1 ответ

 требуется расширить "до выражения void" по стандарту. Я уверен, что это требование в стандарте по причинам, которые совпадают со многими комментариями здесь. Но что касается конкретной реализации, это все обоснование, которое необходимо.

ей реализации C ++ (реализация Visual Studio 2008) я вижу следующую строку в<cassert> #ifdef NDEBUG #define assert(_Expression) ((void)0)Я не понимаю необходимости бросать 0, чтобы аннулировать. Мне кажется, что #ifdef NDEBUG #define ...

2 ответа

Спасибо за предложения. Я нашел виновника, изучив различия между моей системой и установкой по умолчанию.

периментировал с проектом C ++, используяТехника хеширования времени компиляции я нашел здесь [http://www.chrissavoie.com/articles/research/hash2], Макросы работают, как и ожидалось, и время компиляции разумное, но 64 рекурсивных макроса, похоже, ...

5 ответов

 лень как пользовательский язык; на самом деле вы делаете это сами в своем комментарии к ответу sclv. Проблема, которую вы описываете, имеет мало общего с макросами или ленью, а еще меньше - со сравнением двух. Это проблема высокого уровня абстракции, а именно, что разумная абстракция для одного программиста может быть непостижима для другого. Это стоит обсудить, но, как говорит 6502, возможно, не на SO.

вык к ленивой оценке из Haskell, и теперь меня раздражают языки с нетерпением по умолчанию теперь, когда я правильно использовал ленивую оценку. Это на самом деле довольно вредно, так как другие языки, которые я использую, в основном делают ...

2 ответа

 личное определение; Я уверен, что есть много Java-кодеров, которые думают, что языки в строках или генераторы кода на самом деле являются DSL. Они просто неправы: p

етил на этот вопрос из аналогичного вопроса, который я сделал в комментарии, который я сделал к одному из многих замечательных ответов, которые я получил. Первоначально я спрашивал о макросах AST, которые в основном вызывали очень подробные и ...

2 ответа

Короче говоря, чтобы включить платформы Apple и распространенные платформы Unix, вам потребуется:

етил, что в MacOS X (Lion) макрос__unix__ не определен. Поскольку MacOS имеет корни в BSD UNIX, разве это не так? Можно ли сообщить компилятору / препроцессору, что я хочу, чтобы его считали системой UNIX?

8 ответов

 вам не нужны макросы препроцессора в большинстве случаев.

ли C # определять макросы, как это делается в языке программирования C с помощью операторов препроцессора? Я хотел бы упростить регулярную типизацию некоторых повторяющихся утверждений, таких как следующее: Console.WriteLine("foo");

1 ответ

Они мне нравятся. Они позволяют делать интеллектуальные вещи, как это. :)

емя чтения http://en.wikipedia.org/wiki/C_preprocessor#Multiple_evaluation_of_side_effects [http://en.wikipedia.org/wiki/C_preprocessor#Multiple_evaluation_of_side_effects] Я наткнулся на этот пример: \#define max(a,b) \ ({ typeof (a) _a = (a); ...