- 论坛徽章:
- 0
|
幼稚而又奇怪的问题
因为我要用结构处理协议包,如果不去掉对齐,按照sizeof取字节的时候会错,不知不去掉对齐有什么好办法。
我把代码贴到下边,谁能帮我在solaris 9 ,oracle 9i环境下编译下,谢谢
- #include <stdlib.h>;
- #include <sys/ipc.h>;
- #include <stdio.h>;
- #include <string.h>;
- #include <fcntl.h>;
- #include <unistd.h>;
- #include <sys/types.h>;
- #include <sys/stat.h>;
- #include <sys/time.h>;
- #include <sys/socket.h>;
- #include <netinet/in.h>;
- #include <arpa/inet.h>;
- #include <pthread.h>;
- #include <sys/msg.h>;
- #include <netdb.h>;
- #include <errno.h>;
- #include <sys/ioctl.h>;
- #include <math.h>;
- #include <iconv.h>;
- #include <ctype.h>;
- #include <time.h>;
- #include <sys/uio.h>;
- #include <sys/wait.h>;
- #include <sys/un.h>;
- #include <limits.h>;
- #include <unistd.h>;
- #include <arpa/nameser.h>;
- #include <resolv.h>;
- #include <signal.h>;
- #include <stdarg.h>;
- #include <sqlca.h>;
- #include <oraca.h>;
- #include <sqlda.h>;
- #include <sqlcpr.h>;
- typedef struct
- {
- uint8_t fsuid[14];
- uint32_t head;
- uint8_t uptime[6];
- uint8_t cmd;
- }__attribute__((packed)) ai_packet;
- void initdb();
- main()
- {
- struct ai_packet asp;
- printf("aip=%d\n csp=%d\n",sizeof(aip));
- initdb();
-
- printf("haha\n");
- }
- void initdb()
- {
- EXEC SQL BEGIN DECLARE SECTION;
- VARCHAR username[20];
- VARCHAR password[20];
- VARCHAR db_name[20];
- EXEC SQL END DECLARE SECTION;
-
- strcpy((char *)username.arr,"wyj");
- username.len=strlen((char *)username.arr);
- strcpy((char *)password.arr,"wyj");
- password.len=strlen((char *)password.arr);
- strcpy((char *)db_name.arr,"bakkgl");
- db_name.len=strlen((char *)db_name.arr);
-
- EXEC SQL CONNECT :username IDENTIFIED BY :password USING :db_name;
-
- if (sqlca.sqlcode!=0)
- {
- printf("sqlca.sqlcode=%d,fail to connect\n",sqlca.sqlcode);
- exit(0);
- }
- }
复制代码 |
|