Получить размер поля структуры в C ++ тривиально, если у вас есть экземпляр структуры. Например (некомпилированный):
typedef struct Foo {
int bar;
bool baz;
} Foo;
// ...
Foo s;
StoreInSomething(s.bar, sizeof(s.bar)); // easy as pie
Теперь я все еще могу делать что-то подобное, но с интерфейсом, который я реализую (я получаю BOOL, который указывает, каким должно быть состояние конкретного бита в битовом поле), я бы создание структуры исключительно для получения размера элемента данных. Есть ли способ указать компилятору, что он должен использовать размер поля структуры без создания экземпляра структуры? Это был бы философский эквивалент:
SetBit(bool val) {
StoreInSomething(
BITFIELD_POSITION_CONSTANT, // position of bit being set
val, // true = 1, false = 0
sizeof(Foo::bar)); // This is, of course, illegal. (The method I've been told I must use req's the size of the target field.)
}
Создание структуры в стеке должно быть быстрым и дешевым, но я подозреваю, что при проверке кода меня за это пожалеют, так что я ищу лучший способ, который не • вводить дополнительную нагрузку на обслуживание (например, #defines для размеров). Я пробовал: if (App.Servers [index] .ServerState == "Enabled") { ...
Я разрабатываю приложение WP7, и этому приложению необходимо изменить значок кнопки на панели приложения в зависимости от состояния запроса. Я пробовал:
if (App.Servers[index].ServerState == "Enabled")
{
DetailsAppBar.btnStart.IconUri = new Uri("/AppBar/appbar.stop.rest.png");
}
else
{
DetailsAppBar.btnStart.IconUri = new Uri("/AppBar/appbar.transport.play.rest.png");
}
Это не вызывает ошибок в коде, но он не может скомпилироваться .... приветствуются любые подсказки для этого :)
спасибо