c语言代码错误c2059,error C2059: 语法异常:“常量”

error C2059: 语法错误:“常量”

为什么会常量呢?

先来看看我的错误出现在哪里,*X509_NAME directoryName;,提示X509_NAME 提示常量。

如何找到这个宏定义呢,在WryCrypt.h

4d0a547c12e0

image

1.但是问件中没有包含这个头文件啊?

宏定义如下:

#define X509_NAME ((LPCSTR) 7)

2.发生错误的文件是x509v3.h

4d0a547c12e0

image

如图这个文件中包含了#include 文件,进入这个文件,

4d0a547c12e0

image

它包含#include 文件,在有两个地方让我觉得很有趣。

#ifdef OPENSSL_SYS_WIN32

#undef X509_NAME

#undef X509_EXTENSIONS

#undef X509_CERT_PAIR

#undef PKCS7_ISSUER_AND_SERIAL

#undef OCSP_REQUEST

#undef OCSP_RESPONSE

#endif

typedef struct X509_name_st X509_NAME;

我的理解是:先取消了几个宏定义,这里只关心X509_NAME这个宏定义,这个宏定义已被取消。接下来又将struct X509_name_st定义为X509_NAME.也就是说X509_NAME现在代表一个struct。

而在包含的x509.h中又取消了X509_NAME宏定义,如第三图所示。那么现在X509_NAME应该为空不代表任何东西,为什么会报常量错误呢?

C++ 宏定义 C2509

分享到:

------解决方案--------------------

先包含 ,再包含 X509_NAME *directoryName 定义的头文件呢?

X509_NAME *directoryName定义的头文件是什么意思,是X509_NAME这个结构体的定义吗,如果是的话,错误还是没解决。

就是说象下面这样。

假如 A.h 里面有 X509_NAME *directoryName; 这句。

那么保证在其它地方 include A.h 之前,先 include 。

如果 B.cpp 里面有 X509_NAME *directoryName; 这句。

那么一定要在它出现之前的某位置 include 。

如果你已经这么做了,但仍然出现问题,就当我没说吧,看不到代码我也是连分析带猜的。

------解决方案--------------------

偶遇到类似问题都是用

“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”

的方法解决的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值