Я смотрю на пример libgpiod gpiogetcxx. cpp из github https://github.com/brgl/libgpiod/blob/master/bindings/cxx/examples/gpiogetcxx.cpp Я немного запутался
line_bulk::request(const line_request& config, const ::std::vector<int> default_vals)
, принимая структуру line_request в качестве ссылочного параметра, содержимое структуры, как показано ниже.
struct line_request
{
/**
* @brief Request types.
*/
enum : int {
DIRECTION_AS_IS = 1,
/**< Request for values, don't change the direction. */
DIRECTION_INPUT,
/**< Request for reading line values. */
DIRECTION_OUTPUT,
/**< Request for driving the GPIO lines. */
EVENT_FALLING_EDGE,
/**< Listen for falling edge events. */
EVENT_RISING_EDGE,
/**< Listen for rising edge events. */
EVENT_BOTH_EDGES,
/**< Listen for all types of events. */
};
GPIOD_API static const ::std::bitset<32> FLAG_ACTIVE_LOW;
/**< Set the active state to 'low' (high is the default). */
GPIOD_API static const ::std::bitset<32> FLAG_OPEN_SOURCE;
/**< The line is an open-source port. */
GPIOD_API static const ::std::bitset<32> FLAG_OPEN_DRAIN;
/**< The line is an open-drain port. */
GPIOD_API static const ::std::bitset<32> FLAG_BIAS_DISABLE;
/**< The line has neither pull-up nor pull-down resistor enabled. */
GPIOD_API static const ::std::bitset<32> FLAG_BIAS_PULL_DOWN;
/**< The line has a configurable pull-down resistor enabled. */
GPIOD_API static const ::std::bitset<32> FLAG_BIAS_PULL_UP;
/**< The line has a configurable pull-up resistor enabled. */
::std::string consumer;
/**< Consumer name to pass to the request. */
int request_type;
/**< Type of the request. */
::std::bitset<32> flags;
/**< Additional request flags. */
};
Я не понимаю следующий код
lines.request({
argv[0],
::gpiod::line_request::DIRECTION_INPUT,
0
});
Я заметил, что похоже, что код заполняет член структуры в очень случайном порядке, я прав? Я предположил, что argv [0] соответствует потребителю :: std :: string, DIRECTION_INPUT соответствует перечислению, я не совсем понимаю, что пытается сделать 0.
Я не вижу любое объявление структурной переменной, такой как line_request obj, в коде с использованием csope, мне было интересно, почему этот код не встретит недопустимую инициализацию во время компиляции
что происходит с другими членами структуры, которые не связаны в инициализации? станет ли оно по умолчанию нулевым?