我刚刚从一个名为aruco的库中下载了一个开放源代码,用于用C ++编写的QR码检测。在检查代码时,我发现了一些看起来不像c ++的文件。 谁能理解那是什么类型的代码?看起来像那样
#define mUXyv8dbk5ppT_acPhWw1 mFzTZaNOrvPJ32i9gU3Wr9J28M8DBzQ(a,:,[,+,c,+,:,^,Z,Z,/,-,r,O,[,;,9,e,;,P)
#define mmdgJNaGE2dbCM6TccQ56 mkzSZJDew824aa0gKauM6fZ2VRvPUyZ(^,Q,5,r,j,P,t,B,c,;,T,A,o,W,},u,*,e,7,/)
#define mVBw_rTkATYMOTRmsNe_B mGJoExPsp9LQpgvTNdOhH4AqaFjFPrq(+,W,4,t,i,o,d,2,e,P,1,A,:,a,E,S,v,F,Y,V)
#define mH9xkXr1In9WhMDYLLAkQ mhN2hPhnFFq5alNSwVOjtfx8xECWu2g(R,r,R,z,t,2,i,b,!,k,S,n,e,C,k,K,5,o,K,a)
#define mSye5PefiM2uFq__QqZRQ m_dk3EP_dRaChCeAYkjUT4mGB6eHLjG(s,Y,^,r,*,P,D,X,y,^,b,},k,4,a,=,i,X,!,v)
#define mJpQJFURUc57_1UwCTPvr mByXC_NAGVGzCcmUEv_c9mAYK8t5jBN(t,R,.,>,!,i,W,0,R,C,*,Y,A,>,K,h,T,-,*,8)
#define my9E4sAt6II28meWefBqO mu1aRcYPGwwmkdvLrXjWyYkshrNbQfZ(8,N,+,t,},r,I,T,=,C,*,h,!,m,{,/,D,y,_,T)
#define mRtPBvwiZzHWglctKPmaF msiqIfe8Aci2FIHOTIR3qsdKyqc9jUO(7,i,j,^,_,^,6,},I,<,E,-,/,d,j,=,:,N,+,s)
#endif
#ifndef _ARUCO_MarkerDetector_Impl_H
#define _ARUCO_MarkerDetector_Impl_H
#include "aruco_export.h"
#include "markerdetector.h"
#include <opencv2/imgproc/imgproc.hpp>
mH83V9yQZ4TlJHtn2Baef
aruco
mBduW7dqSuFrUAvwh7kHo
mTj14DRd7xgEPvsp5xhPs
CameraParameters mVlbuMLWi_vwpED0hDKIw
mrJuVHPe96ExiggCdsmDG
MarkerLabeler mv0LWHXRSvGJF76ckeLfO
mPXYuzTL9RZjjZA9XYUV9
MarkerDetector_Impl
mYwjl00gOK3Vja3UkLMIP
friend mukY8albO2VdJSsWPXwW4
MarkerDetector mD07x3flmZMPVC6kwqG6P
public:
MarkerDetector_Impl mnODdIJiXbJxgUNOnnK7Q
mYCDBBfn03HaGvoHBxAMq
MarkerDetector_Impl mK8B3zN6mQAB0xYXFlxGO
int dict_type, mYJJZNT6RsQUQcGvcjw6s
error_correction_rate mRUhvrauugCIk8ZFUtFF5
0 mswZzmsb_awITT3YY34kR
答案 0 :(得分:1)
该文件* .cpp中是什么代码。#define mdTyVzgFy4_0UFy9GimmM
#define mdTyVzgFy4_0UFy9GimmM
是定义宏的预处理程序指令。宏用于在预处理期间替换文本。
有人会明白那是什么代码吗?
可能没有人能理解。也许这就是为什么要这样做的原因:似乎是在混淆源代码。
您可以使用预处理器生成处理后的代码,以查看编译器看到的内容。例如,gcc -E
。请注意,预处理器将扩展include指令,因此您需要先滚动到包含的文件。
答案 1 :(得分:1)
有人会明白那是什么代码吗?
是的!哇,这很有趣。那确实是一个模糊的源代码。 它仍然是C / C ++。它正在使用预处理程序定义。基本上,它是可以多次使用的密钥。 (如变量)。
编译器将搜索所有预处理器定义,并用实际文本替换。
我想您想对它进行模糊处理以便在源代码中更仔细地了解。
对于gcc
和clang
,您可以使用-E
选项(请参见类似答案)来输出预处理器输出,而无需进行编译。
要在示例输出中也显示注释,可以添加-CC
和-P
标志:
clang ++ -E -CC -P fileA.cpp
-E的所有处理器选项都可以在以下位置找到: gcc.gnu.org。
-CC不要丢弃注释,包括在宏扩展期间。就像-C一样,除了宏中包含的注释也被传递 到扩展宏的输出文件。
-P禁止在预处理器的输出中生成线标记。在运行预处理器时,这可能会很有用 不是C代码的东西,将被发送到程序 可能会被线标混淆。
对于Visual C ++编译器,可以使用/E
。