在回答不同的问题时,我找不到为什么不允许使用以下代码的原因.
template <typename F> void bar (F *f) { f->a = 0; }
int main () {
struct Foo { int a; } f = { 3 };
bar(&f); // fail
}
Run Code Online (Sandbox Code Playgroud)
我提供的解释是编译器无法合法地表达模板扩展,但这更多是我的直觉而不是理由.关于为什么代码不应该编译,是否有明确的解释?
下面是使用调试变量的示例
class A{
public:
A(bool debug):m_debug(debug){};
~A(){};
void Test(){
for(int i=0;i<1000000;i++){
// do something
if(m_debug) print();
}
}
void print(){
std::cout << "something" << std::endl;
}
private:
bool m_debug;
};
Run Code Online (Sandbox Code Playgroud)
下面是使用调试宏预处理器的示例
#include "Preprocessor.h"
class A{
public:
void Test(){
for(int i=0;i<1000000;i++){
// do something
#ifdef DEBUG
print();
#endif
}
}
void print(){
std::cout << "something" << std::endl;
}
};
Run Code Online (Sandbox Code Playgroud)
在Preprocessor.h中简单
#define DEBUG
Run Code Online (Sandbox Code Playgroud)
使用调试变量的好处是类对全局预处理器头的依赖性较小.关于宏方法的好处是,如果在运行时执行语句,则减少1000000,这对于每个fps计数时的图形应用程序来说可能是至关重要的.什么被认为是更好的方法?
我仍然被认为是c的初学者,我开始学习文件.我已经建立了一个空白文件.每次编译此程序时,该文件仍为空白.需要帮忙!!
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE * x;
char name[25];
printf("enter your name: ");
scanf("%s", &name);
x = fopen("x1.txt", "w");
if(x = NULL)
{
printf("Unable to open the file");
}
else
{
fprintf(x, "%s\n", name);
printf("date has been entered successfully to the file");
fclose(x);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一些输出的代码,bcdefg
我不明白为什么。
我用谷歌搜索,但找不到任何东西。
const char a[]="Abcdefg";
printf("%s",&(sizeof 2[a])[a]);
Run Code Online (Sandbox Code Playgroud)
为什么是输出bcdefg
,而不是Abcdefg
?