如何在不使用Microsoft特定扩展C库的情况下在VS2012中编写C程序?
例如,scanf_s()是Microsoft特定的实现。但是如果我们使用它,我们就无法在Linux中编译代码。
因此,我们应该并行使用Linux VM来编译gcc中的代码。 要么 我们可以在Windows上设置gcc。 要么 在VS 2012本身有没有更好的选择或调整来实现这一目标?
答案 0 :(得分:0)
设置“禁用语言扩展”只会删除某些语言功能。这些功能的列表在here。
但是,Microsoft提供的额外函数不是语言功能 - 如果您想使用它们,它们只是可选功能。它们不会被该设置禁用。标有函数的安全版本(后缀为_s)属于此类别。
话虽如此,如果您导航到标题中scanf_s的定义,您可以看到Microsoft提供了一种禁用此特定函数系列的方法。
如果您在代码#include
之前在代码中定义以下内容#define __STDC_WANT_SECURE_LIB__ 0
然后scanf_s将不再编译。
如果要通过编译器开关实现此目的,请转到项目属性,然后找到预处理器定义。将以下定义添加到最后:
__STDC_WANT_SECURE_LIB__#0
您可能会发现类似的方法来禁用其他不属于“标准”C的其他Microsoft功能。