интересное поведение
От: antirest  
Дата: 26.02.08 22:35
Оценка:
Коллеги, скажите, есть разумное объяснение, почему код
        SK_ViewZoom(skv, SK_VIEW_SCALE_X(skv) +
            logf(1.0+SK_VIEW_SCALE_X(skv))/3.0);

выдает ошибки:
...\sk\sk_view.c(136) : error C2143: syntax error : missing ')' before ';'
...\sk\sk_view.c(136) : error C2143: syntax error : missing ';' before '/'
...\sk\sk_view.c(136) : error C2059: syntax error : ')'

а будучи замененным на
{
        M_Real l = logf(1.0+SK_VIEW_SCALE_X(skv));
        SK_ViewZoom(skv, SK_VIEW_SCALE_X(skv) + l/3.0);
}

нормально компилируется?

MSVC2005

#define SK_VIEW_SCALE_X(skv) (skv)->mView.m[0][0]
Re: дополнение
От: antirest  
Дата: 26.02.08 22:38
Оценка:
136 — это вторая строка
Re: интересное поведение
От: Аноним  
Дата: 27.02.08 19:00
Оценка: :)
Здравствуйте, antirest, Вы писали:

A>Коллеги, скажите, есть разумное объяснение, почему код


SK_VIEW_SCALE_X — это наверняка криво написанное макро...
Re: интересное поведение
От: gear nuke  
Дата: 27.02.08 19:23
Оценка:
Здравствуйте, antirest,

Пиши багрепорт в MS

math.h
#define logf(x)     ((float)log((double)(x))) ;
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[2]: в MSVC2008 исправлено [-]
От: gear nuke  
Дата: 27.02.08 19:34
Оценка:
-
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[2]: интересное поведение
От: antirest  
Дата: 28.02.08 22:59
Оценка:
GN>Пиши багрепорт в MS

GN>math.h

GN>
GN>#define logf(x)     ((float)log((double)(x))) ;
GN>


Долго на это втыкал (b для знаков препинания не особо заметен), потом наконец понял. Цензурных слов нет. Спасибо
Re[3]: интересное поведение
От: gear nuke  
Дата: 29.02.08 11:02
Оценка:
Здравствуйте, antirest,

Вообще самое смешное тут (если бы не было так грустно) что Аноним был практически прав
Автор:
Дата: 27.02.08
. Такие ошибки всегда последствия кривых макросов.

Но 7.1.3/1 стоит тоже иметь ввиду:

Each identifier with file scope listed in any of the following subclauses (including the
future library directions) is reserved for use as a macro name and as an identifier with
file scope in the same name space if any of its associated headers is included.


Кстати, какой приняли workarround?
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[4]: интересное поведение
От: Аноним  
Дата: 29.02.08 12:16
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Кстати, какой приняли workarround?

#undef logf(x)
#define logf(x) ((float)log((double)(x)))

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.