從時間翻翻代碼時的時候,我看到人們寫的線路,如:有沒有辦法讓事情做點什麼,做任何事情?
something;
人們總是說這樣的聲明是愚蠢的,什麼都不做。我開始懷疑C++是否有辦法讓它做任何事情。
單詞陳述在C++中定義得很好。所以我實際上有兩個問題:
- 有沒有辦法讓這樣的一行做任何事情,而不使用宏?
- 有沒有辦法讓東西成爲一個對象,所以
something;
實際上是一個標識符語句(我希望我理解並正確使用這個詞),並且做任何事情。我猜想一個宏使它不是一個標識符聲明。
所以代碼示例使用宏:
something.cpp:
#include <iostream>
int main() {
#include "something.hpp"
something;
return 0;
}
something.hpp:
#define something std::cout<<"It's something!\n"
當然然後something;
做一些事情。
有沒有一種方法可以實現something.hpp
,以便它不使用宏,並且最好定義一些類並使something
成爲它的一個實例並執行用戶編寫的代碼。
include
的位置。是故意選擇的,所以可以注入任何代碼。 E.g:
class T{};
T something;
注意,我相信,我的第二個問題是由templatetypedef誰解決問題的以前版本的回答。
關於#4,它是*表達式語句*。實際上,null語句也是一個表達式語句,但沒有表達式,表達式是可選的。 – chris
真的不是很清楚你在問什麼。你能否包含一些實際的代碼?你是否真的只是想知道是否有可能有'標識符'''做些什麼?你什麼時候會在真實代碼中遇到過這個問題?你說「不時」,好吧,如果是這樣的話,大概這個代碼*會做一些事情,你應該把它包括在這裏。 – meagar
我不明白這個問題。你是否在問如何給語言中沒有意義的語句賦予意義? –