如何解决C ++ alignas1不会影响结构的大小
考虑以下代码:
#include <iostream>
struct alignas(1) H1 {
uint8_t f8;
uint64_t f64;
};
#pragma pack(push,1)
struct H3 {
uint8_t f8;
uint64_t f64;
};
#pragma pack(pop)
int main() {
std::cout << "H1 " << sizeof(H1) << std::endl;
std::cout << "H3 " << sizeof(H3) << std::endl;
return 0;
}
输出:
$ ./a.out
H1 16
H3 9
alignas(1)
不会影响H1
的大小,而#pragma
会影响。
相反,alignas(64)
实际上会增加结构的大小。
解决方法
declare
jdoc varchar2 (32767) :=
'{"items": [{"NAME":"AUDI","YEAR":"2000"},{"NAME":"BMW","YEAR":"2010"}]}';
jobj json_object_t;
keys json_key_list;
jarr json_array_t;
begin
jobj := json_object_t (jdoc);
keys := jobj.get_keys;
jarr := jobj.get_array (keys(1));
for ai in 0..jarr.get_size ()-1 loop
jobj := treat (jarr.get(ai) as json_object_t);
keys := jobj.get_keys;
for ki in 1..keys.count loop
dbms_output.put_line (keys(ki)||'='||jobj.get_string (keys(ki)));
end loop;
end loop;
end;
/
PL/SQL procedure successfully completed.
NAME=AUDI
YEAR=2000
NAME=BMW
YEAR=2010
您的程序格式错误。不允许使用<source>:3:8: error: requested alignment is less than minimum alignment of 8 for type 'H1'
struct alignas(1) H1 {
^
1 error generated.
削弱对齐要求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。