我对golang很新,这应该是一个简单的答案,但我试着搜索每一个没有运气的地方.
如何在不同的.go包/文件中访问main.go中声明为/ init的全局变量?继续告诉我变量是未定义的(我知道全局变量很糟糕,但这只是用作时间戳)
在main.go
var StartTime = time.Now()
func main(){...}
Run Code Online (Sandbox Code Playgroud)
尝试在不同的.go文件中访问StartTime,但一直未定义StartTime
可能重复:
main()是否真的启动了C++程序?
可以在程序启动前调用我的函数吗?我该怎么做这项工作C++还是C?
(我正在使用Visual C++ 2008)我总是听说main()需要返回一个整数,但是这里我没有放入return 0;并且它编译时出现0错误和0警告!在调试窗口中,它表示程序已经退出代码0.如果此函数被命名为main()以外的任何东西,编译器会抱怨说'blah'必须返回一个值.粘贴a return;也会导致错误出现.但完全不考虑它,它编译得很好.
#include <iostream>
using namespace std;
int main()
{
cout << "Hey look I'm supposed to return an int but I'm not gonna!\n";
}
Run Code Online (Sandbox Code Playgroud)
这可能是VC++中的一个错误吗?
在设置SDL时遇到一些问题后,我发现SDL定义了一个替换main的宏:
#define main SDL_main
// And then
extern C_LINKAGE int SDL_main(int argc, char *argv[]);
Run Code Online (Sandbox Code Playgroud)
如果main函数没有定义argc和argv参数,这也会产生编译错误.
当我看到它时,这个宏让我很头疼...为什么SDL需要重新定义主要?经过一番搜索,我找到了一些人#undef main,并以正常的方式使用它.
所以这就是问题: 为什么SDL需要重新定义main,它做什么?取消定义是否有任何副作用?
我注意到的一件事是SDL将标准输出和错误重定向到文件(我不想要这种行为),如果我取消定义主要行为,这种行为就会停止.
public static <T extends String> void main(T[] args) {
System.out.println("Hello World!");
}
Run Code Online (Sandbox Code Playgroud)
我很想知道上面的代码片段是否可以编译并成功运行,而且确实如此!但是,我也想知道如果T extends String被替换会发生什么T extends String & AutoClosable; String没有实现AutoClosable,所以我没想到这会成功运行,但它仍然存在!
public static <T extends String & AutoCloseable> void main(T[] args) {
System.out.println("This still works!");
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,为什么这仍然成功运行?
备注:
根据标题,是否有PHP相当于__name__ == "__main__"?
有什么东西适用于通过命令行和Web请求执行的脚本,还是需要自定义函数?
对于那些不熟悉Python的人来说,__name__ == "__main__"允许你定义一个模块文件,并且如果它是入口点,还有一些允许你运行它的东西.PHP中的等效结构类似于:
// SomeClass.php
<?php
class SomeClass
{
function doStuff() {
echo "wahey!\n";
}
}
// python, I know.
if (__name__ == "__main__") {
$sc = new SomeClass;
$sc->doStuff();
}
?>
// OtherClass.php
<?php
require_once("SomeClass.php");
class OtherClass
{
public $yep;
}
?>
// command line:
php SomeClass.php // outputs "wahey!"
php OtherClass.php // outputs nothing
Run Code Online (Sandbox Code Playgroud)
注意:zerkms的答案是最好的,但是不太正确 - 它应该是:
if (!debug_backtrace()) {
// do useful stuff
}
Run Code Online (Sandbox Code Playgroud)
这比!count(debug_backtrace())快得多,它本身的速度大约是我的涉及realpath()的解决方案的两倍.
我正在将应用程序从Solaris移植到Linux
链接的目标文件没有定义main().但是在Solaris中正确地完成了编译和链接,并生成了可执行文件.在Linux中我得到这个错误
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
Run Code Online (Sandbox Code Playgroud)
我的问题是,我不能包含新的.c/.o文件,因为它是一个巨大的应用程序,并已运行多年.我怎样才能摆脱这个错误?
makefile的代码提取:
RPCAPPN = api
LINK = cc
$(RPCAPPN)_server: $(RPCAPIOBJ)
$(LINK) -g $(RPCAPIOBJ) -o $(RPCAPPN)_server $(IDALIBS) $(LIBS) $(ORALIBS) $(COMMONLIB) $(LIBAPI) $(CCLIB) $(THREADLIB) $(DBSERVERLIB) $(ENCLIB)
Run Code Online (Sandbox Code Playgroud) 我在采访中不断提出这个问题:
不使用main()函数编写程序?
我的一个朋友向我展示了一些使用宏的代码,但我无法理解它.
所以问题是:
是不是真的可以编写和编译程序main()?
在C中,我知道int main()返回一个int,其中void main()没有.除此之外,他们之间有区别吗?第一个好于第二个?
我编写了一个Scala类并main()在其中定义了该方法.它编译了,但是当我运行它时,我得到了NoSuchMethodError:main.在我看到的所有scala示例中,main方法是在一个对象中定义的.在Java中,我们在类中定义main方法.是否可以main()在Scala类中定义或者我们是否总是需要一个对象?