因为C中没有保护全局变量赋值的语言特性,您会建议这样做吗?
举个例子:
我们有一个包含头文件module.h和实现文件module.c的模块。该模块包含一个名为global_variable的全局变量。global_variable将由实现中的其他函数更新,但我们不希望module的用户能够分配给它。
模组:
#ifndef MODULE_H_
#define MODULE_H_
extern int global_variable;
#define global_variable (int)global_variable
/* Because the macro expansion is
因此,我被要求在AIX7 (64位)机器上编译一些遗留的C代码。
而且,我刚刚修改了makefile以编辑所使用的编译器(从gcc到xlc_r)和标志,从(-DAIX3到-DAIX7)。
然而,由于这个愚蠢的做法,我得到了一个错误,它抱怨
xlc_r -c -q64 -O -DAIX -DAIX7 log.c
"log.c", line 128.7: 1506-343 (S) Redeclaration of log_write differs from previous declaration on line 140 of "lib.h".
我有一个在g++ 4.8.1和clang >= 3.3下以c++11模式正确编译和运行的项目。然而,当我切换到实验性的-std=c++1y模式时,clang3.3(而不是g++)阻塞了通过Boost.Test间接包含的<cstdio>头(所以我自己很难更改它)。
// /usr/include/c++/4.8/cstdio
#include <stdio.h>
// Get rid of those macros defined in <stdio.h> in lieu of real functions.
// ...
#undef gets
//
我一直在使用Enterprise Architect工具执行一个与逆向工程相关的项目。但是,当我用C/C++语言执行逆向工程时,出现了未知的错误。错误日志如下:
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\7z\7zDecode.cpp on line 91. Unexpected symbol: *
You may need to define a language macro.
There was an error parsing C:\Users\soo\Desktop\7z920