相关疑难解决方法(0)

C++标记为已弃用

我在接口中有一个方法,我想用便携式C++弃用.当我用Google搜索时,我得到的只是Microsoft特定的解决方案; #pragma deprecated__declspec(不建议使用).

二等奖解决方案是ifdef MSVC和GCC解决方案.
谢谢

c++

140
推荐指数
5
解决办法
8万
查看次数

是否有可移植的方式从C预处理器打印消息?

我希望能够做类似的事情

#print "C Preprocessor got here!"
Run Code Online (Sandbox Code Playgroud)

用于调试目的.什么是最好/最便携的方式?

printing c-preprocessor

85
推荐指数
5
解决办法
7万
查看次数

#warning预处理器指令的可移植性

我知道#warning指令不是标准的C/C++,但有几个编译器支持它,包括gcc/g ++.但对于那些不支持它的人,他们会默默地忽略它还是会导致编译失败?换句话说,我可以安全地在我的项目中使用它而不会破坏不支持它的编译器的构建吗?

c++ compiler-construction portability warnings c-preprocessor

53
推荐指数
2
解决办法
4万
查看次数

有没有办法弃用命名空间?

简短:有没有办法在gcc或clang中弃用命名空间?

长:

多年来,我们一直在各种命名空间中积累所有类型的东西.现在我们决定将一些命令放入其中,并将命名空间拆分为正确命名的命名空间; 所以:

namespace util
{
uint32_t codecID( const char * name ) ;

void alignStrings( std::vector< std::string > * strings ) ;
}
Run Code Online (Sandbox Code Playgroud)

应该成为

namespace codec
{

uint32_t codecID( const char * name ) ;

}

namespace fmt
{

void alignStrings( std::vector< std::string > * strings ) ;

}
Run Code Online (Sandbox Code Playgroud)

只是为了增加乐趣,旧命名空间是在几个包含文件中定义的.其中的所有内容都是内联/模板代码; 所以没有与之相关的库.

显而易见的解决方案是将所有定义从旧命名空间复制到新命名空间,并将所有内容标记为旧的命名空间,逐个项目已弃用.

我们不能在不破坏多个项目的情况下重命名命名空间.

现在我想知道是否有更好的方法来做这样的事情,例如将namespace util的使用标记为已弃用.

我们使用gcc 4.7.3作为我们的生产编译器,但是对clang进行构建和测试以尝试捕获gcc细节; 所以在这些编译器上工作的东西会有所帮助.

c++ gcc namespaces clang

6
推荐指数
1
解决办法
494
查看次数