草庐IT

inline-assembly

全部标签

c++ - header 中的 `const` 和 `constexpr` 变量是否应为 `inline` 以防止违反 ODR?

考虑以下header并假设它在多个TU中使用:staticintx=0;structA{A(){++x;printf("%d\n",x);}};作为thisquestion解释说,这是违反ODR的,因此是UB。现在,thereisnoODRviolation如果我们的inline函数引用了一个非volatileconst对象并且我们不在该函数中使用它(加上其他规定),所以这在标题中仍然可以正常工作:constexprintx=1;structA{A(){printf("%d\n",x);}};但如果我们碰巧使用它,我们又回到了与UB的第一方:constexprintx=1;struct

c++ - header 中的 `const` 和 `constexpr` 变量是否应为 `inline` 以防止违反 ODR?

考虑以下header并假设它在多个TU中使用:staticintx=0;structA{A(){++x;printf("%d\n",x);}};作为thisquestion解释说,这是违反ODR的,因此是UB。现在,thereisnoODRviolation如果我们的inline函数引用了一个非volatileconst对象并且我们不在该函数中使用它(加上其他规定),所以这在标题中仍然可以正常工作:constexprintx=1;structA{A(){printf("%d\n",x);}};但如果我们碰巧使用它,我们又回到了与UB的第一方:constexprintx=1;struct

c++ - GCC 内联汇编 : constraints

我很难理解GCC内联汇编(x86)中的角色约束。我有readthemanual,它准确地解释了每个约束的作用。问题是,即使我了解每个约束的作用,我也很少理解为什么要使用一个约束而不是另一个约束,或者可能会产生什么影响。我意识到这是一个非常广泛的话题,所以一个小例子应该有助于缩小焦点。下面是一个简单的asm例程,它只是添加了两个数字。如果发生整数溢出,它会将值1写入输出C变量。int32_ta=10,b=5;int32_tc=0;//overflowflag__asm__("addl%2,%3;"//Doa+b(theresultgoesintob)"jno0f;"//Jumpahead

c++ - GCC 内联汇编 : constraints

我很难理解GCC内联汇编(x86)中的角色约束。我有readthemanual,它准确地解释了每个约束的作用。问题是,即使我了解每个约束的作用,我也很少理解为什么要使用一个约束而不是另一个约束,或者可能会产生什么影响。我意识到这是一个非常广泛的话题,所以一个小例子应该有助于缩小焦点。下面是一个简单的asm例程,它只是添加了两个数字。如果发生整数溢出,它会将值1写入输出C变量。int32_ta=10,b=5;int32_tc=0;//overflowflag__asm__("addl%2,%3;"//Doa+b(theresultgoesintob)"jno0f;"//Jumpahead

C++ -fvisibility=hidden -fvisibility-inlines-hidden

我对C++可见性属性有疑问。我已阅读http://gcc.gnu.org/wiki/Visibility但我不太明白它是如何工作的。我想在我拥有的一些共享库中隐藏可见性。我相信这意味着符号被隐藏了?那么您打算如何链接共享库?有什么特别的方法吗?如果我链接它通常如何链接它不起作用。谁能帮帮我。 最佳答案 -fvisibility=hidden默认隐藏所有符号。然后您要做的就是选择您希望链接到您的库的用户可以看到哪些功能,并通过使用可见属性标记它们使其可见。例如void__attribute__((visibility("default

C++ -fvisibility=hidden -fvisibility-inlines-hidden

我对C++可见性属性有疑问。我已阅读http://gcc.gnu.org/wiki/Visibility但我不太明白它是如何工作的。我想在我拥有的一些共享库中隐藏可见性。我相信这意味着符号被隐藏了?那么您打算如何链接共享库?有什么特别的方法吗?如果我链接它通常如何链接它不起作用。谁能帮帮我。 最佳答案 -fvisibility=hidden默认隐藏所有符号。然后您要做的就是选择您希望链接到您的库的用户可以看到哪些功能,并通过使用可见属性标记它们使其可见。例如void__attribute__((visibility("default

c++ - `inline` 和 `template<class = void>` 之间有什么实际区别?

我们有2种方法可以在仅header库中声明函数。他们是inline和template.在boostsourcecode我可以看到这两种变体。示例如下:inlinevoidmy_header_only_function(void){//Dosomething...return;}templatevoidmy_header_only_function(void){//Dosomething...return;}我知道根据C++标准有什么区别。但是,任何C++编译器都不仅仅是标准的,而且标准也经常不清楚。在从不使用模板参数并且与递归可变参数模板无关的情况下,主流编译器的2个变体之间是否存在(

c++ - `inline` 和 `template<class = void>` 之间有什么实际区别?

我们有2种方法可以在仅header库中声明函数。他们是inline和template.在boostsourcecode我可以看到这两种变体。示例如下:inlinevoidmy_header_only_function(void){//Dosomething...return;}templatevoidmy_header_only_function(void){//Dosomething...return;}我知道根据C++标准有什么区别。但是,任何C++编译器都不仅仅是标准的,而且标准也经常不清楚。在从不使用模板参数并且与递归可变参数模板无关的情况下,主流编译器的2个变体之间是否存在(

python - 在 Jupyter Notebook 中的 %matplotlib inline 之后使用 %matplotlib notebook 不起作用

我正在使用JupyterNotebook绘制饼图。在第一个单元格中我的代码有一个魔术命令%matplotlibinline,在这个魔术命令之后我运行我的代码,一切正常并且我的图形渲染。但是在第二个单元格中,当我设置%matplotlibnotebook进行交互式绘图时,我的图形在运行第二个单元格后不会呈现。我需要重新启动内核并再次使用%matplotlibnotebook运行单元,并且在此之前无法运行%matplotlibinline命令。这是我的firstcell代码,带有%matplotlibinline,渲染效果很好:importmatplotlib.pyplotasplt%ma

python - 在 Jupyter Notebook 中的 %matplotlib inline 之后使用 %matplotlib notebook 不起作用

我正在使用JupyterNotebook绘制饼图。在第一个单元格中我的代码有一个魔术命令%matplotlibinline,在这个魔术命令之后我运行我的代码,一切正常并且我的图形渲染。但是在第二个单元格中,当我设置%matplotlibnotebook进行交互式绘图时,我的图形在运行第二个单元格后不会呈现。我需要重新启动内核并再次使用%matplotlibnotebook运行单元,并且在此之前无法运行%matplotlibinline命令。这是我的firstcell代码,带有%matplotlibinline,渲染效果很好:importmatplotlib.pyplotasplt%ma