- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 C 编程语言中,#define
指令允许在源代码中定义宏。这些宏定义允许声明常量值以在整个代码中使用。
宏定义不是变量,不能像变量一样被程序代码改变。我们通常在创建表示数字、字符串或表达式的常量时使用此语法。像这样
#include <stdio.h>
#define NAME "Jack"
#define AGE 10
int main()
{
printf("%s is over %d years old.\n", NAME, AGE);
return 0;
}
美妙之处在于,如果我的代码中有多个函数,我不需要将常量变量输入到每个函数中,编译器只需用过程值替换定义的表达式。 p>
现在我的问题是:在 Julia 编程中是否有与此等效的命令?
例如
density = 1 # somehow a defined variabe.
function bar(g)
t = density +g
end
function foo()
r = dencity + 2
end
main()
g = 10;
foo()
bar(g)
end
最佳答案
您可以在 Julia 中使用宏
模拟 C #define
行为。
macro NAME()
return :("Jack")
end
macro AGE()
return :(10)
end
在 Julia REPL 中,输入 @NAME
将返回 "Jack"
。
julia> @NAME
"Jack"
julia> @AGE
10
为了安全起见,请记住将宏调用括在括号中,例如,
julia> println("Hello ", (@NAME))
Hello Jack
julia> println(@NAME * " is " * repr(@AGE) * " years old")
ERROR: syntax: "*" is not a unary operator
julia> println((@NAME) * " is " * repr(@AGE) * " years old")
Jack is 10 years old
但这真的有必要吗? Julia 中惯用的方式是定义全局 const
变量。尽管文档出于性能原因不鼓励使用全局变量,但像这样的宏对性能没有帮助,您可以从 LLVM 代码中看出这一点。
macro NAME()
return :("Jack")
end
const name = "Jack"
function f_hello_global()
println("Hello ", name)
end
function f_hello_macro()
println("Hello ", (@NAME))
end
对于像这样的微不足道的函数,您会发现 LLVM 代码看起来完全一样(太长;此处未显示)。
julia> @code_llvm f_hello_global()
. . .
julia> @code_llvm f_hello_macro()
. . .
编辑:顺便说一下,我认为如果您需要 使用全局变量,那么就使用它。 Julia 文档(当前稳定版本:0.6.2)中的论点是它有时可能会降低性能。然而,想象一下,如果一个常量用于分布在 20 个模块中的 100 个函数中,您是愿意将同一行代码编写 100 次并煞费苦心地检查各个模块中的数字是否一致,还是您会定义一次并在所有模块中使用它地方?我认为正确使用全局常量可以使代码干净且易于维护,而且这种担忧往往会战胜性能上的小幅提升。
关于c - 等价于 Julia 语言中的 C 编程语法 "#define",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45663692/
是: x -= y; 相当于: x = x - y; 最佳答案 不,它们并不等同于您表达它们的方式。 short x = 0, y = 0; x -= y; // This compiles f
这个问题在这里已经有了答案: What is the rationale for all comparisons returning false for IEEE754 NaN values? (1
我在哪里可以找到与 Python maketrans 和 translate 等效的 C# 代码?谢谢! 最佳答案 这应该带你到那里的大部分方式: public class MakeTrans {
我正在 SwiftUI 中构建一个应用程序其中包含很多组件,包括 Text包含长字符串的 View 。 当我在 iPhone 11 上启动该应用程序时,一切正常,但当我在较小的设备(例如 iPhone
这个问题已经有答案了: What is the equivalent lambda expression for System.out::println (2 个回答) Function pointe
我最近在使用 postgres,我必须做一些计算。然而我一直没能模仿Excel的HOUR()函数,我看了official information但这对我帮助不大。 函数接收一个小数,并得到小数的时、分
如果在 cython 中定义了一个指针 vector ,那么与 python 中的 enumerate 类似的函数或过程是什么,用于遍历指针数组中元素的索引和值在 C 声明类型函数内的循环中? 测试.
要选择: select user_id, max(case when value > 0 then timestamp else 0 end) as max_timestamp_whe
如果没有例子,这个问题很难问,所以这里是: #include struct O { }; struct C { template void function1(void (C::*call
我得到了这个结构的实现: struct NodoQ { Etype elem; NodoQ *sig; }; 下面是这段代码吗, typedef NodoQ *PtrNodoQ; PtrNod
我有一些宏需要访问当前类的类型,目前我通过违反 DRY 的模式解决了这个问题: struct ThisScruct{ int a; double b; //example st
我想知道 TensorFlow 的 softmax_cross_entropy_with_logits 是否有等效的 PyTorch 损失函数? 最佳答案 is there an equivalent
我找到了一个 trie 的 java 实现,并希望在 J2ME 中有一个类似的实现。这是代码。 节点类 import java.util.Collections; import java.util.L
我刚刚学习了 GraphQL,我想找到用户 id=2 OR 用户 id=3 现在我将如何进行 GraphQL 查询,我正在使用以下查询获取整个集合 { users() {
假设我有两个 Web 服务:A 和 B。两者都在 Apache 上运行。我希望它们可以从我的主机的不同端口访问:A 来自端口 88,B 来自端口 89。 我可以手动完成(首先创建图像,然后使用“doc
我一直在 excel 中使用一个非常简单的数组公式来处理一些数据集,但是它们变得太大并且在我更新计算时完全破坏了我的计算机性能。 excel表格和MySQL数据库布局如下: +-Timestamp-+
我有一个类,其实例要通过不同于它们携带的数据值的标识来区分。在我的代码中,我打算使用 == 来表示两个实例在它们的数据方面是等价的,并且 is 表示两个变量引用同一个实例,也就是说,他们是相同的。根据
我正在 Windows 中使用 WinSock 2.0 开发代理服务器。如果我想在阻塞模型中开发它,select() 是等待客户端或远程服务器从中接收数据的方法。是否有任何适用的方法可以使用 I/O
我正在将我制作的 Android 应用移植到 iOS。 Android 有一个 Yield() 函数可以将线程从运行中移到线程队列的后面(?)。这很有用,这样该线程就不会占用过多的 CPU 并使其他一
这是否保证始终为真: std::numeric_limits::max() == INT_MAX C++ 标准对此有何规定?我在标准中找不到任何明确说明这一点的引用资料,但我一直在阅读这些内容应该是等
我是一名优秀的程序员,十分优秀!