我正在为TCPServer编写一个方法.我编写了如下代码:
// thread run
protected void threadRun(){
// continue running. don't stop
while(true){
try{
try{
}
catch(Exception e1){
try{
} catch(Exception e2){}
finally{
// skip
continue;
}
}
}
catch(Exception e3){
}
}
}
Run Code Online (Sandbox Code Playgroud)
内容并不重要.有代码接受客户端等,但我删除它们以确保它不是关于细节.无论如何,当我尝试编译这段代码时,编译器会为该continue行说:
Error: continue is not inside a loop
通过认为我可能知道它错了,我用Java编写了完整相同的代码,如下所示:
class test{
public static void main(String[] args){
while(true){
try{
try{
}
catch(Exception e1){
try{
} catch(Exception e2){}
finally{
continue;
}
}
}
catch(Exception e3){
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
正如我所料,java编译器不会提供任何错误消息并成功编译.问题到底是什么?
我在PHP中使用会话登录系统.在所有登录示例中,人们直接使用" session_start()"函数.但我对此感到困惑.
=============================================
在localhost上,我有那些文件;
HTTP://localhost/app1/page1.php
HTTP://localhost/app1/page2.php
HTTP://localhost/app2/page2.php
=============================================
在app1/page1.php,我开始会话并设置一个变量.
session_start();
session_regenerate_id( true );
$_SESSION[ 'name' ] = 'this is my name';
Run Code Online (Sandbox Code Playgroud)
=============================================
在app1/page2.php和中app2/page2.php,我启动会话并获取该变量的值.
session_start();
echo 'name: ' . $_SESSION[ 'name' ];
Run Code Online (Sandbox Code Playgroud)
=============================================
我打开HTTP://localhost/app1/page1.php然后HTTP://localhost/app1/page2.php和它的伟大工程.但在那之后,我打开http://localhost/app2/page2.php,并在屏幕上显示"这是我的名字",这是错误的.因为它是另一个应用程序,我不希望app2到达app1的会话.
我怎么解决这个问题?我不想为每个应用程序使用不同的变量名称.我认为必须有另一个好的解决方案.我也许可以在再生APP2/ID page1.php中,但如果一个人试图打开APP 2 /使page2.php,打开后APP1,他们可能会进入APP 2,这不适合我变好.
谢谢.
我使用Ubuntu 10.10,Code :: Blocks with GCC 4.2.
我写了这样的代码:
#include <iostream>
#include <stdlib.h>
#include <pthread.h>
using namespace std;
void *thread1proc(void* param){
while(true)
cout << "1";
return 0;
}
int main(){
pthread_t thread1;
pthread_create(&thread1,NULL,thread1proc,NULL);
pthread_join(thread1,NULL);
cout << "hello";
}
Run Code Online (Sandbox Code Playgroud)
主要开始,创建线程.但奇怪(对我来说)主要是不继续运行.我希望在屏幕和程序结束时看到"hello"消息.因为在Windows中,在Delphi中它对我有用.如果"main"也是一个线程,为什么它不继续运行?是关于POSIX线程吗?
谢谢.
我正在阅读"D编程语言"一书.它讲的是内部阶级.
class Outer{
int x;
this(){
x = 99;
new Inner;
}
class Inner{
int x;
this(){
x = 5;
writeln( "Inner x = ", x, "; Outer x = ", this.outer.x );
}
}
}
Run Code Online (Sandbox Code Playgroud)
正如本书所说,为了能够访问类Outer的x,我需要使用this.outer.x.但令人困惑的是,"外"类的名称变成小写"外".使用正常的类名"Outer",编译器会给出错误消息.它就像编译器决定你需要使用什么作为名称并强制使用它生成的名称.
我的问题是,当我将"Outer"类重命名为"bLaH"时,现在我再也无法进行外部课程了.
class bLaH{
int x;
this(){
x = 99;
new Inner;
}
class Inner{
int x;
this(){
x = 5;
writeln( "Inner x = ", x, "; Outer x = ", this.bLaH.x );
}
}
}
Run Code Online (Sandbox Code Playgroud)
访问外部类时使用的名称并不明显.第一个字母现在是小写,但编译器说"test1.bLaH"没有定义.(文件名是test1.d)
如果我将"this.bLaH"转换为"this.blah",可能认为编译器可能会将外部类的名称转换为全部小写,这次,编译器会说"未定义变量'blah'".
关于这个语言是否存在设计错误?作为程序员,我不喜欢编译器完成的这种类型的名称转换.
我在Windows XP上,DMD版本是2.060.
我有问题.我会试着解释一下.
我有一个单元,有一个类,可能会有新的功能.
D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas 8DC8977E7A7B469AACFE3CC77CA7075E\UnitFile1.pas
它们都有相同的类:IClass_1 = class
我使用代码编号为这个文件的不同版本.
另一个单元文件(UnitFile2.pas)使用该单元文件(UnitFile1.pas).
此外,第二个单元文件(UnitFile2.pas)具有不同的版本.
F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas 14CEEFAFF1D64DDD8CBDEDD334D4A3FF\UnitFile2.pas
它们都有相同的类:IClass_2 = class(IClass_1)
现在问题开始了;
"F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas"需要"D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas"
"14CEEFAFF1D64DDD8CBDEDD334D4A3FF\UnitFile2.pas"需要"8DC8977E7A7B469AACFE3CC77CA7075E\UnitFile1.pas"
但文件名是相同的(我需要一个像这样的系统.所以它们是相同的).在单元文件中,delphi不允许我这样写;
在文件F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas; 在'D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas'中使用UnitFile1;
我希望我能说出我的问题.如何告诉编译器我想要使用哪个单元文件的路径?(我使用的是Delphi-7)
d ×2
c++ ×1
class ×1
codeblocks ×1
delphi ×1
delphi-7 ×1
delphi-units ×1
exception ×1
gcc ×1
login ×1
path ×1
php ×1
pthreads ×1
session ×1
uses-clause ×1