Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是叮当声++;“忽略外部因素”;";对于一些弃用警告?_C++_Multilingual_Clang++_Extern C - Fatal编程技术网

C++ 是叮当声++;“忽略外部因素”;";对于一些弃用警告?

C++ 是叮当声++;“忽略外部因素”;";对于一些弃用警告?,c++,multilingual,clang++,extern-c,C++,Multilingual,Clang++,Extern C,如果我使用clang 3.8.1编译: extern "C" { int foo(int x) { register int y = x; return y; } } int main() { return foo(123); } 我得到警告: a.cpp:3:18: warning: 'register' storage class specifier is deprecated and incompatible with C++1z [-Wdeprecated-register] int

如果我使用clang 3.8.1编译:

extern "C" {
int foo(int x) { register int y = x; return y; }
}

int main() { return foo(123); }
我得到警告:

a.cpp:3:18: warning: 'register' storage class specifier is deprecated and incompatible with C++1z [-Wdeprecated-register]
int foo(int x) { register int y = x; return y; }
                 ^~~~~~~~~
。。。我真的不应该得到,因为内部函数是C代码。如果我使用GCC 6.3.1,即使使用
-Wall
,我也不会收到此警告


这是一个叮当作响的bug还是我做错了什么?

extern“C”
并不意味着“将此代码编译为C”。它的意思是“使此函数(或多个函数)可从C代码调用”,这通常意味着更改名称混乱,有时还意味着调用约定。

extern“C”
并不意味着“将此代码编译为C”。这意味着“使此函数(或多个函数)可从C代码调用”,这通常意味着更改名称混乱,有时还意味着调用约定。

可能错误与外部“C”无关。?它看起来不是说“寄存器与C不兼容”,而是说“寄存器与C++1z不兼容”。(我假设C++1x表示C++11/14/17。)

也许错误与外部“C”无关?它看起来不是说“寄存器与C不兼容”,而是说“寄存器与C++1z不兼容”。(我假设C++1x表示C++11/14/17。)

这与C无关!代码仍然是C++代码!代码>外部“C”仅指定ABI和命名约定。(你读过警告了吗?
extern“C”
只对外部名称的链接有效-它不会“将编译器更改为”C-mode“。要么修复它,要么用C编译此部分-无论哪个有意义。这与C无关!代码仍然是C++代码!代码>外部“C”仅指定ABI和命名约定。(你读过警告了吗?
extern“C”
只对外部名称的链接有效-它不会“将编译器更改为”C-mode“。要么修复它,要么用C编译此部分-无论哪个有意义。另一种方式看它:它意味着“此函数的名称是C,”而不是身体。@JohnZwinck-它可能涉及的不仅仅是名字。@JohnZwinck:不完全是。它还意味着C调用约定。另一种看待它的方式是:它意味着“这个函数的名称在C中”,而不是主体。@JohnZwinck-它可能涉及的不仅仅是名称。@JohnZwinck:不完全是。它还暗示了C调用约定。