宏htonl将内部逗号解释为参数分隔符

San*_*urg 2 c++ gcc htonl c++11

这是在编译时返回的异常错误,仅限于一些编译器参数.

好的 g++ -std=c++11 -m64 -O3 -DNDEBUG

但是g++ -std=c++11 -m64 -Wall -g,出现此问题:

宏"htonl"传递了7个参数,但只占用了1个

码:

const unsigned int h = htonl(hash::CompileTime<'A', 'S', 't', 'r', 'i', 'n', 'g'>::hash);
Run Code Online (Sandbox Code Playgroud)

我不确定问题是来自调用htonl还是来自我的模板化的哈希.

你知道怎么解决这个问题吗?

其他信息:

template<const char C0,         const char C1 =  '\0', const char C2 =  '\0', 
         const char C3  = '\0', const char C4 =  '\0', const char C5 =  '\0', 
         const char C6  = '\0', const char C7 =  '\0', const char C8 =  '\0', 
         const char C9  = '\0', const char C10 = '\0'>
struct CompileTime
{
    //Do you think this code could help?
};
Run Code Online (Sandbox Code Playgroud)

Aby*_*byx 6

添加另一对括号:

htonl((hash::CompileTime<'A', 'S', 't', 'r', 'i', 'n', 'g'>::hash))