2014-09-30 40 views
1

假设一个项目负责人不希望他的团队成员使用全局变量,他怎么能在技术上做到这一点?建立GCC时有没有一种选择,当它知道某人已经声明了一个全局变量时会抛出错误?有没有办法在使用GCC时禁止在C/C++中声明全局变量?

但是,允许静态全局。

+0

如果你不能声明全局变量,你打算如何使用'stdout'和'stderr'和'errno'?你真的不想让人们定义全局变量 - 尽管库实现者被豁免了,因为他们需要定义'stdout'等吗? – 2014-09-30 05:18:40

+0

我的猜测是,您最好解析'nm -g file.o'的输出(或其附近;选项可能因系统而异,输出格式在系统之间会有很大差异),寻找全局变量定义。您可以查找全局变量引用,但系统库也可以使用它们,所以您必须知道哪些全局变量引用是正确的,哪些不是。我并不知道这个工作有GCC选项,但这并不意味着它不存在。你看过[手册](https://gcc.gnu.org/onlinedocs/gcc-4.9.1/gcc/Warning-Options.html#Warning-Options)吗? – 2014-09-30 05:25:48

+0

@JonathanLeffler感谢您的回复。我只是说如果有选择的话。所以使用'nm'当然是一种方法。你可以在文本框中回答吗? – Wesley 2014-09-30 05:57:27

回答

0

按照要求

你计划如何使用stdinstdoutstderrerrno(名称,但四个全局变量),如果您不能声明全局变量?你真的不想让人们定义全局变量 - 尽管图书馆实施者是免除的,因为他们需要定义stdout等?

我的猜测是,您最好解析nm -g file.o(或其附近;这些选项可能因系统而异,输出格式在系统之间有很大差异),以寻找全局变量定义。您可以查找全局变量引用,但系统库也可以使用它们,所以您必须知道哪些全局变量引用是正确的,哪些不是。

我不知道该工作的GCC选项,但这并不意味着它不存在。你看过manual吗?我确实看过,没有找到适当的警告 - 可能是因为它不是一个常见的要求。

相关问题