我目前正在开始使用编程微控制器C30(C基于GCC微芯片的编译器为他们的PIC24设备),我Strict ANSI warnings出于好奇而启用.首先,我不知道在C11评论标记如//是"错误的"而我应该使用/*blah blah*/,但真正令我感到惊讶的是这一行代码警告.
"警告:使用非标准二进制前缀"
代码行是:
OSCCONbits.COSC = 0b000;
我已经在线查看了C11(ISO/IEC 9899:2011)的草案之一,但在C中找不到任何关于二进制前缀的内容.http://www.open-std.org/jtc1/sc22/wg14/www /docs/n1570.pdf
根据C11,C的正确二进制表示法是什么?
Visual C++可以发出C4738警告:
将32位浮点数存储在内存中,可能会导致性能下降
对于32位float即将存储在存储器中而不是存储在寄存器中的情况.
该描述进一步说明使用double解决问题.我不明白为什么后者是真的.
为什么存储float在内存中会导致性能下降而存储double不会?
此问题基于对此问题的回答(现已删除).它更多地是关于术语而不是实际的编程语义.
什么是通用的"实例化"?它是在编译时还是在运行时发生的?
我将参考Ada 2012标准的最新草案.
术语generic_instantiation的含义是明确的; 它是一个句法结构,类似于
package Inst is new Generic_Package(This => That);
Run Code Online (Sandbox Code Playgroud)
我的问题是关于动词"实例化".
我一直认为"实例化"是在编译时发生的事情.它是泛型模板的扩展,它发生在编译器在编译单元中遇到generic_instantiation时.
但是其他来源提到"实例化",至少可选地,在运行时发生.
为了实例化一个通用单元,程序员 为每个正式传递实际参数.然后,通用实例的行为与任何其他单元一样.可以在运行时实例化通用单元,例如在循环内.
这似乎意味着实例化可以在编译时或运行时发生.我认为这是指制定了的generic_instantiation,它确实发生在运行时-但是,所有的论述出现在运行时,是吗?
我发现从Ada RM得到明确的答案是非常困难的."实例化"或"实例化"没有词汇表条目(附件N).
我能找到的最接近的是12.2(通用机构)第2段中"动态语义学"下的声明:
通用主体的详细说明除了确定通用单元从那时起可以实例化而不会使Elaboration_Check失败之外没有其他效果.
这间接暗示实例化是一个运行时事件.
动词"实例化"是否正确引用了编译时事件(扩展通用模板)?到运行时事件(详细说明generic_instantiation)?如果是后者,我们称之为前者?Ada RM是否清晰,因为它需要在这一点上?
我试图在windows下编译一个linux编写的程序(我使用mingw)
void make_directory(const char* name) {
mkdir(name1, name2);
}
Run Code Online (Sandbox Code Playgroud)
有一个错误:
Too Many Arguments to function 'int mkdir(const char*)'
Run Code Online (Sandbox Code Playgroud)
有什么想法解决这个问题?
我正在使用GCC版本4.7.1,但我也在GCC 4.8上尝试过这个.这是我正在尝试编译的代码:
#include <stdio.h>
void print(int amount) {
int i;
for (i = 0; i < 5; i++) {
printf("%d", i);
}
}
int main(int argc, char** argv) {
print(5);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它看起来应该工作,当我编译时......
gcc main.c
Run Code Online (Sandbox Code Playgroud)
编译需要一段时间,生成一个a.exe文件,a.exe文件就会消失.我的代码没有给我任何错误.
这是一个证据的GIF,因为有些人误解了这个:

我正在阅读一些嵌入了一些汇编代码的C代码.我理解这__asm__是一个运行汇编代码的语句,但是__asm__在下面的代码中做了什么?根据输出(即r = 16),似乎__asm__不影响变量r.不是吗?
#include <stdio.h>
static void foo()
{
static volatile unsigned int r __asm__ ("0x0019");
r |= 1 << 4;
printf("foo: %u\n", r);
}
Run Code Online (Sandbox Code Playgroud)
平台:OSX Yosemite上的Apple LLVM 6.0版(clang-600.0.56)(基于LLVM 3.5svn)
我有一个16x16透明的png而且我做了
convert -rotate -45 a.png b.png
Run Code Online (Sandbox Code Playgroud)
这将它旋转并创建一个大小为22x22的新图像b.png,当我在背景中使用时,显示原始图像(16x16)与底层背景一起旋转但是出现的新填充显示为白色背景.
如何使新填充物透明化?
如果那是不可能的,那么我怎么能让新图像的所有背景都是一种颜色?
我可以使用这个命令
mysqldump -u"root" myDB| gzip > mydb_`date +%d-%m-%Y`.sql.gz
Run Code Online (Sandbox Code Playgroud)
但是在crontab中运行时
* * * * * mysqldump -u"root" myDB| gzip > mydb_`date +%d-%m-%Y`.sql.gz
Run Code Online (Sandbox Code Playgroud)
(此错误由函数日期引起,当我删除它时,crontab运行良好)
在ubuntu上,它在日志文件中发生此错误.
ubuntu CRON[xxxx] (user) CMD(mysqldump -u"root" myDB| gzip > mydb_`date+)
ubuntu CRON[xxxx] (CRON) error ( grandchild #5353 failed with exit status 2)
ubuntu CRON[xxxx] (CRON) info (no MTA installed, discarding output)
Run Code Online (Sandbox Code Playgroud) 我有一个网站.如果我在http://example.com格式的域中登录,然后将我的地址更改为http://www.example.com,我发现我的帐户未登录.如果我将地址更改为http:/ /example.com,我发现我的帐户已登录.
我联系了我的主人,他们告诉我它是一个编程问题.
如何解决此问题,以便两个地址代表相同的访问/会话/ cookie?
我正在使用PHP和MySQL
vikram@vikram-Studio-XPS-1645:~/comp$ l
3rdParty/ que.ico SE32.EXE start.fgx Supp/ WebResources/
autorun.inf Readme.txt START.EXE start.fgz Walkthrough/
vikram@vikram-Studio-XPS-1645:~/comp$ ls
3rdParty que.ico SE32.EXE start.fgx Supp WebResources
autorun.inf Readme.txt START.EXE start.fgz Walkthrough
vikram@vikram-Studio-XPS-1645:~/comp$
Run Code Online (Sandbox Code Playgroud)
这两个命令有什么区别?
我试过了$ which l,但没有输出.
也没有结果$ man l.
我也尝试过谷歌.