- 论坛徽章:
- 0
|
大家好
我在linux下写了些动态库的代码,现在需要移植到windows上
在windows上用gun工具编译ok,没有问题,但是用visual studio的编译器编译就报错
错误分析是宏书写方式的问题(以前在pic单片机代码中遇到过,matlab里面书写的宏代码在keil c里面不能编译通过)
gnu能通过的宏如下
#define Socket(domain, type, protocol) ({ \
int sockfd; \
if((sockfd=socket((domain), (type), (protocol)))==SOCKET_ERROR){ \
print_err("socket() error: %d", WSAGetLastError()); \
Exit(1); \
} \
sockfd; \
})
#define print_err(format, args...) ({ \
fprintf(stderr, PRINT_PREFIX "ERR: [%s : %3d] %s() -> " format, __FILE__, __LINE__, __func__, ## args); \
perror(""); \
})
...
在使用这样的宏代码的地方,当用visual studio编译器编译时就报错,错误是这样的
the left parenthesis '(' found and '...(代码位置)...' was not matched correctly
而使用gnu的编译器mingw32编译的时候就没有问题(linux下的gcc也是没有问题)
那位大侠能够分析一下原因和介绍怎样写兼容性的宏吗
我如上所写宏是为了让宏能够像一个函数一样处理一段任务,然后返回一个代码执行后的值 |
|