用警告在G 上编译代码,但在Clang3.1(Xcode 4.3.3)上给出了相同代码的错误
Code compiles on g++ with warning but gives error for same code on clang3.1(Xcode 4.3.3)
以下行在g 上成功编译,但在clang上给出了错误::
static_assert(tBits <= sizeof(ULONG)*8, "This is IO method");
g 警告::
没有对" static_assert"参数的参数,取决于模板参数,因此必须可用'static_assert'的声明
clang错误::
使用未宣布的标识符'static_assert';您的意思是" static_cast"?
请帮助我。
函数发表的评论声明:
template < size_t tBits >
HRESULT DoIO( std::bitset< tBits >& bitsetToSerialize ) const
" static_assert"在C 11中引入了语言关键字 - 不是函数或宏。
两个编译器都给您"我不知道此功能"警告/错误。
对于编译器,当您使用" static_assert"时,编译器给您"我不知道此功能",编译器不得用C 11支持(-std = C 11)进行编译(-STD = C 11)。
为了证明这一点,我采用了以下代码:
#include <bitset>
template<size_t tBits>
int DoIO(std::bitset<tBits>& /*bitsetToSerialize*/)
{
static_assert(tBits <= sizeof(unsigned long) * 8, "tBits is too big.");
return tBits;
}
然后,我用GCC 4.7.3编译了它,并收到以下错误:
Osmith@olivia64〜/src $ g -o sa.o -c sa.cppsa.cpp:在函数" int doio(std :: bitset&lt; _nb>&amp;)"中:sa.cpp:6:78:错误:" static_assert"没有参数取决于模板参数,因此必须提供" static_assert"的声明[-fpermissive]sa.cpp:6:78:注意:(如果使用" -fpermissive",g 将接受您的代码,但允许使用未确定的名称的使用)
然后,我启用了C 11支持,并没有问题编译:
OSMITH@olivia64〜/src $ g -std = C 11 -o sa.o -c sa.cpp -wallOsmith@olivia64〜/src $
所以,然后我用clang
编译了它Osmith@olivia64〜/src $ clang -o sa.o -c sa.cppsa.cpp:6:9:错误:使用未确定的标识符'static_assert';您的意思是" static_cast"? static_assert(tbit&lt; = sizeof(unsigned long) * 8," tbits太大。"); ^生成1个错误。
最后,我使用C 11支持的Clang对其进行了编译,并在其中编译了。
Osmith@olivia64〜/src $ clang- versionUbuntu Clang版本3.2-1〜exp9ubuntu1(标签/发行_32/final)(基于LLVM 3.2)目标:x86_64-pc-linux-gnu线程模型:POSIXOSMITH@olivia64〜/src $ clang -Std = C 11 -O SA.O -C SA.CPPOsmith@olivia64〜/src $
可以肯定的是,让我们给编译器的机会来帮助我们并打开" -wall":
Osmith@olivia64〜/src $ g -wall -o sa.o -c sa.cppsa.cpp:6:9:警告:标识符'static_assert'是C 11中的关键字[-wc 0x-compat]sa.cpp:在函数" int doio(std :: bitset&lt; _nb>&amp;)"中:sa.cpp:6:78:错误:" static_assert"没有参数取决于模板参数,因此必须提供" static_assert"的声明[-fpermissive]sa.cpp:6:78:注意:(如果使用" -fpermissive",g 将接受您的代码,但允许使用未确定的名称的使用)
相关文章:
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- VI工作室代码错误无法打开输出文件主.exe
- 引入参数化构造函数后显示 LNK 2019 未解析外部符号的代码错误
- 有关矩阵的代码错误导致分段错误(内核转储)
- C++ Schannel POST 400 错误代码错误请求
- Java 本机访问代码错误:"Invalid memory access"
- 代码错误修改
- C++代码错误分配
- "_FCbuild"不能用作函数 - C/C++ 代码错误
- 我的代码错误类型警告 1 警告 C4018 和更多错误
- 代码错误(从 1 到 100 找到质数)
- OpenCV VisualStudio,C 代码错误尝试访问像素
- 当我使用的教程完全没有错误时,为什么我的代码错误
- 简单的NOOB C 输入/输出问题:代码错误
- 为什么enumProcessModules返回false值和299代码错误
- WinhttpSetoption()失败设置TLSV1.2,带有错误代码错误_internet_incorrect_ha
- 苹果安全传输代码错误
- C++ - 国际象棋主教移动代码错误
- 导入Python库时,嵌入了Python代码错误
- 编译提升C 代码错误