我遇到了这样的问题:
我有一个头文件:
//first variant:
#ifndef LIBRARIES_H
#define LIBRARIES_H
const char a='4';
#endif // LIBRARIES_H
Run Code Online (Sandbox Code Playgroud)
我将它包含在几个.cpp文件中.一切都很完美.
但突然间,如果我宣布一个指针:
//second variant:
#ifndef LIBRARIES_H
#define LIBRARIES_H
const char *a="asdfgh";
#endif // LIBRARIES_H
Run Code Online (Sandbox Code Playgroud)
请注意,我只声明其中一个(变种).
我只宣告了一次(我试图更改sadfgh或asdfg的名称).
当我尝试第二个变体时,我先删除,反之亦然.
如果我声明一个指向字符串的指针,我将得到错误"多次包含变量".我用qt编译它.我已经删除并重新编译了几次项目.

当然,我可以在main()函数中定义它,但我想知道,这个问题的原因是什么?为什么我不能在头文件中声明指针,然后将它包含在几个源代码文件中?
在一些变量初始化中"l"的含义是什么?例如:
#define maxpossible (1000000000L)
double A = 1L;
double B = 999999999l;
Run Code Online (Sandbox Code Playgroud)
"L"和"l"之间有区别吗?
我已经定义了一个局部变量
local tSuppressLines
Run Code Online (Sandbox Code Playgroud)
我想确保检查局部变量,以便我有一个错字
if not tSuppessLines then
-- do something
end if
Run Code Online (Sandbox Code Playgroud)
我收到警告
我正在写一个Python脚本,我有一个变量声明的问题,这是我的脚本的一部分:
if chromosome :
if chromosome.group(1) != '1' :
output.close()
print str(base)+" bases found in chromosome "+chr_name
chr_name = chromosome.group(1)
output = open(current_dir+"/"+name+"3/"+name+".chr"+chromosome.group(1)+".wig", "w")
output.write("fixedStep chrom=chr"+chromosome.group(1)+" start=1 step=1\n")
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我在关闭输出之前在代码中创建它,但事实上,这种情况永远不会发生,因为您无法在创建文件之前输入条件.
我可以做一些脏东西,在我的条件之前打开一个tmp文件,但那不是很优雅.所以我想知道是否有另一种解决方案让Python开心?
编辑:
if chromosome :
if chromosome.group(1) != '1' :
print str(base)+" bases found in chromosome "+chr_name
chr_name = chromosome.group(1)
with open(current_dir+"/"+name+"3/"+name+".chr"+chromosome.group(1)+".wig") as output:
output.write("fixedStep chrom=chr"+chromosome.group(1)+" start=1 step=1\n")
Run Code Online (Sandbox Code Playgroud)
EDIT2:
这是算法的概念,也许它可以帮助更好地理解问题:
for line in input do :
chromosome = re.search(something)
if chromosome :
if chromosome != '1' :
ouput.close()
output = open(file+chromosome) …Run Code Online (Sandbox Code Playgroud) 我想创建一个只包含一个sql :: Connection指针的Connector类.我的尝试是构建一个单例类,并使指针和构造函数本身私有.只有一个静态函数是公共的,允许创建连接.
我尝试使用
Connector::conn = 0;
Run Code Online (Sandbox Code Playgroud)
在实现模块中失败,因为conn是私有的,不能从外部访问.
如果我省略initiliziation我得到一个未定义的引用错误
Connector.h
#ifndef CONNECTOR_H
#define CONNECTOR_H
#include <cppconn/driver.h>
#include <cppconn/exception.h>
class Connector {
public:
static sql::Connection* getConnection();
protected:
Connector();
Connector(const Connector& other) { }
static sql::Connection * conn;
static sql::Driver * drive;
};
#endif /* CONNECTOR_H */
Run Code Online (Sandbox Code Playgroud)
Connector.cpp
#include "Connector.h"
Connector::Connector() {
}
sql::Connection * Connector::getConnection() {
if(Connector::conn == 0) {
Connector::drive = get_driver_instance();
Connector::conn = Connector::drive->connect("tcp://any.de:3306", "any", "any");
Connector::conn->setSchema("cryptoTool");
}
return Connector::conn;
}
Run Code Online (Sandbox Code Playgroud) 在Python中,可以避免变量(预)声明以避免NameError:名称'c'未定义:
a=5
if a==7:
c=10
if c: print c
Run Code Online (Sandbox Code Playgroud)
在最后一行,如果c:只是验证变量' c '是否不是None.什么可用于检查'c'变量是否存在(或预先声明)?
当我编译我的Linux程序时,我收到此错误:
error: storage class specifiers invalid for parameter declarations
Run Code Online (Sandbox Code Playgroud)
这只发生在Linux上,因为它可以很好地编译Windows.代码行是:
int Start(static const char* m_vertexshader, static const char* m_fragmentshader);
Run Code Online (Sandbox Code Playgroud)
如果您需要任何细节或信息,请使用GNU C编译器(g ++)
将头文件中的变量声明为指针或非指针之间有什么区别?我不确定我是否正确理解这些差异.
例如
class MyClass {
private:
MyOtherClass* moc; // pointer
MyOtherClass moc2; // no pointer
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,在将变量声明为指针时,我已经提出了以下优点/缺点.
好处:
缺点:
还有什么可说的?
我正在以下列格式从文件中读取字符串:N // string的长度abcdef //长度为N的字符串
像那样:
char necklace[400];
fin = fopen("file.in", "r");
fscanf(fin, "%d %s", &N, necklace);
char* left = &necklace[0];
char* right = &necklace[N-1];
Run Code Online (Sandbox Code Playgroud)
但是,当我char*在使用它们之前声明它时,它会给我编译错误:
char necklace[400];
char* left, right; // this causes the problem
fin = fopen("file.in", "r");
fscanf(fin, "%d %s", &N, necklace);
left = &necklace[0];
right = &necklace[N-1];
Run Code Online (Sandbox Code Playgroud)
你能告诉我这个行为吗?
在C++中,它们之间是否有任何区别
Object o;
o = Object(); // calling the class constructor
Run Code Online (Sandbox Code Playgroud)
和
Object o = Object(); // one-line declaration and construction
Run Code Online (Sandbox Code Playgroud)
在Java等其他语言中它是一样的吗?(除了语法)
declaration ×10
c++ ×6
variables ×4
pointers ×3
python ×2
c ×1
char ×1
codeblocks ×1
gnu ×1
header-files ×1
include ×1
linux ×1
livecode ×1
long-integer ×1