问题标签 [static-if]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
62 浏览

c++ - 确保是否发出特定代码

如何确保是否不发出某些特定代码?

说,我试图写类似 a static switch(or static if) 的东西,我希望检测是否operator ()发出了第二个 lambda 的主体:

有什么技巧可以让我检测到生成的二进制/.o/.a 中是否存在特定代码块?

以前可以执行以下操作(对于GCC):

  • 添加-Wa,-adhlns="$@.lst"CXXFLAGS;
  • asm volatile ("nop");在要测试的代码块中添加语句;
  • 构建,然后运行awk "/\#APP/, /\#NO_APP/" build/*.lst(而不是哈希符号可能有斜线)命令以查看内联汇编到*.lst目录中的build文件;
  • 如果awk打印一些东西,则发出特定的代码块。

LIVE DEMO

但我使用clang,因此不能使用-Wa编译器参数。有什么办法clang?我知道我可以.S使用-S编译器选项发出汇编文件(),但是在大型项目中,如果在构建过程中存在依赖链,则很难以这种方式进行。除了文件之外,如何发出程序集.o

0 投票
1 回答
74 浏览

c++ - 关于编译时 const 值的 if 语句

我希望将代码包含在基于编译时常量值的函数中,但 static_if 不是 C++ 中的构造。

所以我可以写这样的函数

我想保证编译器有两个函数。一个将“if(flag) a++”编译到函数中,一个不编译。

是否有可能根据 C++17 标准获得此保证,还是我受编译器供应商的摆布?

谢谢。