OSSEC源代码创建VS2010项目

1.   无法解析的外部符号 _va_copy,该符号在函数 __log 中被引用


va_copy is c99 - anything before that, and its upto the compiler... as pointed out, gcc 2.95 dosnt have it,depends on your definition of absolutely ancient, but the gcc 2.95.4 that comes with freebsd 4.x does not support va_copy 

因为va_copy,C99中对其进行了支持。但是如果不支持怎么办?

#ifndef va_copy 
# ifdef __va_copy 
# define va_copy(DEST,SRC) __va_copy((DEST),(SRC)) 
# else 
# define va_copy(DEST, SRC) memcpy((&DEST), (&SRC), sizeof(va_list)) 
# endif 
#endif


2. c语言变量的错误  “i”: 未声明的标识符

C语言变量必须在函数最前面声明,然后才能使用。特别是放在while、case语句中的变量声明 


3. 宏定义错误


两个define放在一起,提示错误   error C2065: “PRODUCT_UNLICENSED_C”: 未声明的标识符

解决办法:两个define分开定义


4. 字符串比较

忽略大小写比较 linux strcasecmp相当于windows平台的 stricmp

5. c文件

c文件里不能包含对c++类的使用,比如string等。


参考:  http://www.linuxidc.com/Linux/2012-02/52963.htm  - 跨Linux和Windows的C编程杂记

你可能感兴趣的:(windows,linux,C语言)