我认为在C中是不可能的,但要求验证这一点.是否可以在没有这种类型的实变量的结构成员之间进行算术运算?例如:
typedef struct _s1
{
int a;
int b;
int c;
} T1;
Run Code Online (Sandbox Code Playgroud)
我希望看到"c"成员与结构开始相比的偏移量.如果我有变量很容易:
T1 str;
int dist = (int)&str.c - (int)&str;
Run Code Online (Sandbox Code Playgroud)
但是我的结构太大了,它在RAM中没有成员(仅在EEPROM中).我想做一些地址计算,但不想定义RAM成员.我可以使用结构指针而不是结构变量(它只需要4个字节)来完成工作,但这个案例对我来说很有趣.
我需要为Attiny85编译C项目,但不确定使用哪个编译器 - 如果可能的话免费.Atmel Studio是个不错的选择吗?
我想这是不可能的(但是)但不确定.我需要根据当前日期进行条件编译.就像是:
#if (__CURRENT_YEAR < 2016)
...
#endif
Run Code Online (Sandbox Code Playgroud)
我需要在几个月后从项目中排除某些内容,并确保不会忘记这一点(在将来的版本中).
是否有必要M
为赋值和decimal
变量比较添加零值?
decimal val;
...
if (val == 0M)
{
}
Run Code Online (Sandbox Code Playgroud)
要么
if (val == 0)
{
}
Run Code Online (Sandbox Code Playgroud)
我想常量将在编译时转换,结果将是相同的.
如果将变量定义为volatile int x
in file1.c
和extern int x
in file2.c
(而不是extern volatile int x
),会发生什么?编译器是否有机会知道它x
是volatile并且在这里编译file2.c
.
有什么区别:
fread( buf, sizeof buf, 1, file ); // 'file' is valid open 'FILE *'
Run Code Online (Sandbox Code Playgroud)
和
fread( buf, 1, sizeof buf, file );
Run Code Online (Sandbox Code Playgroud)
参数2和3被size_t size, size_t nmemb
描述为"fread()读取nmemb数据项,每个字节长度为".我认为读取的最终字节数必须是size * nmemb
但由于某种原因,只有第二种语法(大小= 1)对我有效.