我问,因为我的编译器似乎这么认为,即使我没有.
echo 'int main;' | cc -x c - -Wall
echo 'int main;' | c++ -x c++ - -Wall
Clang没有发出任何警告或错误,gcc只发出温和的警告:'main' is usually a function [-Wmain]但是只有在编译为C时才指定.指定a -std=似乎并不重要.
否则,它编译和链接很好.但在执行时,它立即终止SIGBUS(对我来说).
阅读(C)和C++中main()返回的(优秀)答案?和快速的grep通过语言规范,这肯定会似乎对我来说,一个主要的功能是必需的.但是gcc -Wmain('main' 通常是一个函数)的冗语(以及这里的错误缺失)似乎可能暗示其他情况.
但为什么?是否有一些奇怪的边缘案例或"历史"用途?谁知道什么给了?
我想,我的观点是,我认为这应该是托管环境中的错误,是吗?
我最近一直在使用CloudFlare优化的zlib,结果非常令人印象深刻.
不幸的是,他们似乎已经假设zlib的开发被放弃了,他们的分叉也就此消失了.我最终能够手动将他们的更改改为当前的zlib开发分支,尽管这是一个真正的痛苦.
无论如何,我还没有能够利用CloudFlare代码中的一个主要优化,即使用新的(Haswell和后来的,我相信)英特尔处理器中包含的PCLMULQDQ无进位乘法指令实现的快速CRC32代码,因为:
我在Mac上,并没有clang集成汇编程序或Apple的古代GAS都不了解所用的新GAS助记符,以及
代码从Linux内核中取出并且是GPL2,这使得整个库GPL2,从而基本上使它对我的目的无用.
所以我做了一些狩猎,几个小时之后我偶然发现了一些Apple在他们的bzip2中使用的代码:arm64和x86_64的手写,矢量化CRC32实现.
奇怪的是,x86_64程序集的注释(仅)在arm64源代码中,但它似乎表明此代码可以与zlib一起使用:
This function SHOULD NOT be called directly. It should be called in a wrapper
function (such as crc32_little in crc32.c) that 1st align an input buffer to 16-byte (update crc along the way),
and make sure that len is at least 16 and SHOULD be a multiple of 16.
Run Code Online (Sandbox Code Playgroud)
但不幸的是,经过几次尝试,此时我似乎有点过头了.而且我不确定如何真正做到这一点.所以我希望有人能告诉我如何/在哪里调用所提供的功能.
(如果有一种方法可以在运行时检测到必要的功能,并且如果硬件功能不可用则可以回退到软件实现,这也是很棒的,所以我不必分发多个二进制文件. ,至少,如果有人可以帮助我了解如何让库正确使用基于Apple PCLMULQDQ的CRC32,那么无论如何都会有很长的路要走.)
几个小时前我试图回答一个问题,我认为这个问题在bash POSIX模式中显示出一个有点模糊的错误.我匆匆忙忙地告诉我不是这样.这个矛盾的答案,明确地说这不是一个错误,被选为正确的答案.
所以我一直在梳理bash文档,我仍然会得到非常相同的印象,所以我想我应该问.
我的(涉嫌)错误:
set -o histexpand (这通常是隐含的)
set -o posix
echo "#!/"
应该,好吧,回声#!/.(它在任何其他shell中都有).但是在bash中,它会打印到标准输出
!/: event not found
然后返回0.
所以在我看来,bash隐含set -o histexpand在极少数情况下违反了POSIX标准,并没有让位set -o posix.
set -o posix读取文档:
Change the behavior of Bash where the default operation differs from the POSIX standard ... This is intended to make Bash behave as a strict superset of that standard.
而且我一直认为这意味着这个选项set在它们相互矛盾时应该取代其他选项?这似乎也不是48个列举的差异之一.
这不是这种情况吗?我错过了什么?
我正试图在Go中从头开始创建一个XMPP库(以及后来的服务器)(尽管语言本身是无关紧要的),作为一种学习XMPP协议和服务器软件开发的方法.
正如你们许多人所知,XMPP是基于XML的消息传递协议,它依赖于大量短而频繁的XML流.我认为对于这样的应用程序,基于事件的XML解析器应该更好,因为我不需要DOM和所有这些(如果我错了,请纠正我).请记住,此库适用于服务器,因此可能会同时运行多个实例;
对于该用例libxml2或expat,两者中哪一个具有更好的性能和内存使用?